注册 登录
编程论坛 C++教室

[求助]哪里出错?

潇湘夜雨 发布于 2007-05-07 20:13, 393 次点击

这个程序循环不可终止,且输出数组也不对,但自己找不到错的地方,盼高手指点!

#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;
}

2 回复
#2
zhangbo851282007-05-08 10:27
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;
解释一下啊??
好象是这里的错误啊
#3
潇湘夜雨2007-05-08 22:53
这是判断square[k][l]为0,且不与square[i][j]在同一行,同一列,和在同一对角线上。
即判断square[k][l]可放置一个皇后。
1