#include <stdio.h>#define M 11#define N 16int data[M][N];void input(){ int i,j;char c; for(i=0;i<M;i++){ for(j=0;j<N;j++){ c=getchar();/* printf("input=%d\n",c);*/ if(c!=10){data[i][j]=c-48;} if(c==10){j--;} } }}void q_abi(int use[M],int see[N],double abi[M]){ int i,j,n; for(i=0;i<M;i++){ abi[i]=0;n=0; for(j=0;j<N;j++){ if((use[i]==1)&&(see[j]==1)){/* printf("data[%d][%d]=%d,abi[%d]=%lf\n",i,j,data[i][j],i,abi[i]);*/ n++; abi[i]=abi[i]+data[i][j]; } }/* printf("abi[%d]=%.2lf n=%d abi/n=%lf |p|=%lf\n", i,abi[i],n,abi[i]/n,(abi[i]/n-0.5)*(abi[i]/n-0.5));*/ if(n>0){ abi[i]=(abi[i]/n-0.5)*(abi[i]/n-0.5);} if(n==0){abi[i]=1;} /* printf("== abi[%d]=%.4lf\n",i,abi[i]);*/ }}void crear(int use[M],int see[N],double abi[M]){ int i; for(i=0;i<M;i++){use[i]=1;} for(i=0;i<N;i++){see[i]=1;} for(i=0;i<M;i++){abi[i]=0.0;}}int cho_abi(int use[M],int see[N],double abi[M]){ int i,n;double tmp=1; for(i=0;i<M;i++){ if(abi[i]<tmp){ tmp=abi[i]; n=i; } } printf("cho q=%d\n",n); return n;}void kaiseki(int n,int use[M],int see[N],double abi[M]){ int seetmp[N]; int mem,x,i; q_abi(use,see,abi); x=cho_abi(use,see,abi); use[x]=0; printf("use[%d]=0\n",x); mem=0; for(i=0;i<N;i++){ mem=mem+see[i]; } printf("mem=%d\n", mem); if(mem>2){ /*x問題=0のメンバを抽出*/ for(i=0;i<N;i++){ seetmp[i]=0; if((data[x][i]==1)&&(see[i]==1)){ seetmp[i]=1; } } kaiseki(n+1,use,seetmp,abi); /*x問題=1のメンバを抽出*/ for(i=0;i<N;i++){ seetmp[i]=0; if((data[x][i]==0)&&(see[i]==1)){ seetmp[i]=1; } } kaiseki(n+1,use,seetmp,abi); } if(mem==2){ printf("ans=%d\n",n); }}int main(){ int use[M];int see[N];double abi[M]; crear(use,see,abi); input(); kaiseki(1,use,see,abi); return;}
このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー と 利用規約 が適用されます。
1文字以上入力してください
本文は少なくとも1文字以上必要です。
1文字以上入力してください。