8皇后程序

lyl0426 2009-07-08 07:29:08
实在是找不出错误在哪? 大侠们帮我看看

#include<iostream>
#include<cmath>
using namespace std;

int count = 0;

bool IsSafe(int i,int queen[])
{
int j;
for(j=1;j<i;j++)
{
if((queen[i] == queen[j]) || (abs(i-j) == abs(queen[j]-queen[i])))
return false;
else return true;
}
}

void Input(int i,int queen[])
{
int j;
if(i>8)
{
count++;
cout<<"方案"<<count<<": ";
for(j =1;j <=8; j++)
{
cout<<" "<<j<<" "<<queen[j]<<endl;
}
cout<<endl;
int queen[9]={0};
}
else
{
for(j=1;j<=8;j++)
{
queen[i] = j;
if(IsSafe(i,queen))
{
Input(i+1,queen);
}
}
}
}

void main()
{
int queen[9]={0}; //queen[2]=5,表示第2个皇后放在第2行第5列,queen[0]不使用
Input(1,queen);
cout<<"共有"<<count<<"种放置方案."<<endl;
}
...全文
33 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyl0426 2009-07-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 luwenzuo 的回复:]
C/C++ codebool IsSafe(int i,int queen[])
{
int j;
for(j=1;j<i;j++)
{
if((queen[i] == queen[j]) || (abs(i-j) == abs(queen[j]-queen[i])))
return false;

}
return true;
}
[/Quote]谢谢啦
lyl0426 2009-07-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 luwenzuo 的回复:]
if((queen[i] == queen[j]) || (abs(i-j) == abs(queen[j]-queen[i])))
return false;
else return true;

只比较一步吗?

好像错了
[/Quote]
谢谢啦
大前置 2009-07-08
  • 打赏
  • 举报
回复
bool IsSafe(int i,int queen[])
{
int j;
for(j=1;j<i;j++)
{
if((queen[i] == queen[j]) || (abs(i-j) == abs(queen[j]-queen[i])))
return false;

}
return true;
}
大前置 2009-07-08
  • 打赏
  • 举报
回复
if((queen[i] == queen[j]) || (abs(i-j) == abs(queen[j]-queen[i])))
return false;
else return true;

只比较一步吗?

好像错了

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧