C/C++の宿題を片付けます 86代目
■ このスレッドは過去ログ倉庫に格納されています
0383初心者
2007/04/30(月) 23:05:11#define N 20
void print_queens(int Q[N][N],int n){int i,j;
for(i=0;i<n;i++){ for(j=0;j<n;j++){if(Q[i][j]==1)printf("1");
else if(Q[i][j]==0)printf("0");}
printf("\n"); }}
int check(int i,int j,int Q[N][N], int n){int I,J,sum=0;for(J=0;J<n;J++)if(Q[i][J]==1 && J!=j)sum++;
for(I=0;I<n;I++)if(Q[I][j]==1 && I!=i)sum++;
for(I=0;I<n;I++ ){for(J=0;J<n;J++){if(i+j==I+J && Q[I][J]==1 && J!=j && I!=i)sum++; }}
for(I=0;I<n;I++ ){for(J=0;J<n;J++){if(i-j==I-J && Q[I][J]==1 && J!=j && I!=i)sum++;}} return (sum);}
int main(void){ int Q[N][N], P[N],n,kensaku=1,flag,i,j,I,J,a;
printf("クイーンの数を入力しなさい\n"); scanf("%d",&n);
for(i=0;i<n;i++){for(j=0;j<n;j++){ Q[i][j]=0; P[i]=0;}}
for(i=0;i<n;i++){for(j=P[i];j<n;j++){if( check(i,j,Q,n)==0){Q[i][j]=1; P[i]=j}
while( j==n ){ P[i]=0; j=P[--i];Q[i][j]=0;P[i]++;i--;}}
print_queens(Q,n); } return(0); }
while( j==n ){P[i]=0;j=P[--i];Q[i][j]=0;P[i]++; i--;}このwhile文をi--をけして正常に結果がえられるように改良していただきたいと思っています。i--がなくても正常な結果がえられると言うのですが僕にはそのプログラムが作れません。
どうか、作ってはいただけませんか?? お願いします。
■ このスレッドは過去ログ倉庫に格納されています