这个程序循环不可终止,且输出数组也不对,但自己找不到错的地方,盼高手指点!
#include<iostream>
#include<cmath>
#include<iomanip>
#include<conio.h>
using namespace std;
#define Size 4
int square[Size][Size]={0};
bool Checkplace( int i,int j ){
for(int k=0;k<Size;k++)
for(int l=0;l<Size;l++){
if(abs(k-i)==abs(l-j)&&square[k][l]==0&&square[i][l]==0&&square[k][j]==0)
return 1;
else
return 0;
}
}
void Print(){
for(int i=0;i<Size;i++){
for(int j=0;j<Size;j++)
cout<<left<<setw(5)<<square[i][j];
cout<<endl<<endl;
}
}
void EightQuene(){
int n=0,i=0,j,k,l,count=0;
while(n<=Size-1){
j=0;
square[n][j]=1;
while(j<Size-1){
for(i=0;i<Size;){
if(Checkplace(i,j+1)){
square[i][j+1]=1;
break;
}
else i++;
}
j++;
}
if( j>=Size-1){
count++;
cout<<"No."<<count<<":"<<endl;
Print();
}
else n++;
}
}
int main()
{
EightQuene();
getch();
return 0;
}