问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

8皇后的衍生问题

发布网友 发布时间:2024-03-01 09:33

我来回答

6个回答

热心网友 时间:2024-06-13 16:16

下面的代码运行速度很快,结束时会给出一个答案,打出每个“皇后”放置位置的坐标(注意,最左上角的坐标是0,0)

/**选择一个方案,使用五个皇后就可以控制一个8*8的棋盘上所有的格式*/
public class Queen
{
public static void main(String[] args)throws Exception
{
int i=0,j=0,k,m,n;
int[][] board=new int[8][8];
java.util.Random r=new java.util.Random();

while(true)
{
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
board[i][j]=0;
}
}

for(k=0;k<5;k++)
{
if(k==0)
{
i=r.nextInt(8);
j=r.nextInt(8);
}
else
{
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
if(board[i][j]==0)break;
}
if(j<8)break;
}
}

board[i][j]=Integer.MIN_VALUE;

for(m=0;m<8;m++)
{
board[i][m]++;
board[m][j]++;
}

for(m=i+1,n=j+1;m<8&&n<8;m++,n++)board[m][n]++;
for(m=i-1,n=i-1;m>=0&&n>=0;m--,n--)board[m][n]++;
for(m=i-1,n=j+1;m>=0&&n<8;m--,n++)board[m][n]++;
for(m=i+1,n=i-1;m<8&&n>=0;m++,n--)board[m][n]++;
}

boolean b=true;
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
if(board[i][j]==0)b=false;
}
}
if(b)break;
}

for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
if(board[i][j]<0)
{
System.out.println(""+i+","+j);
}
}
}
}
}

热心网友 时间:2024-06-13 16:16

用8皇后的非递归解法,每当放满5个皇后时检查一下代表各行、列、斜的几个数组有没有可以放皇后的不就行了么?

热心网友 时间:2024-06-13 16:17

**选择一个方案,使用五个皇后就可以控制一个8*8的棋盘上所有的格式*/
public class Queen
{
public static void main(String[] args)throws Exception
{
int i=0,j=0,k,m,n;
int[][] board=new int[8][8];
java.util.Random r=new java.util.Random();

while(true)
{
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
board[i][j]=0;
}
}

for(k=0;k<5;k++)
{
if(k==0)
{
i=r.nextInt(8);
j=r.nextInt(8);
}
else
{
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
if(board[i][j]==0)break;
}
if(j<8)break;
}
}

board[i][j]=Integer.MIN_VALUE;

for(m=0;m<8;m++)
{
board[i][m]++;
board[m][j]++;
}

for(m=i+1,n=j+1;m<8&&n<8;m++,n++)board[m][n]++;
for(m=i-1,n=i-1;m>=0&&n>=0;m--,n--)board[m][n]++;
for(m=i-1,n=j+1;m>=0&&n<8;m--,n++)board[m][n]++;
for(m=i+1,n=i-1;m<8&&n>=0;m++,n--)board[m][n]++;
}

boolean b=true;
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
if(board[i][j]==0)b=false;
}
}
if(b)break;
}

for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
if(board[i][j]<0)
{
System.out.println(""+i+","+j);
}
}
}
}
}
**选择一个方案,使用五个皇后就可以控制一个8*8的棋盘上所有的格式*/
public class Queen
{
public static void main(String[] args)throws Exception
{
int i=0,j=0,k,m,n;
int[][] board=new int[8][8];
java.util.Random r=new java.util.Random();

while(true)
{
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
board[i][j]=0;
}
}

for(k=0;k<5;k++)
{
if(k==0)
{
i=r.nextInt(8);
j=r.nextInt(8);
}
else
{
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
if(board[i][j]==0)break;
}
if(j<8)break;
}
}

board[i][j]=Integer.MIN_VALUE;

for(m=0;m<8;m++)
{
board[i][m]++;
board[m][j]++;
}

for(m=i+1,n=j+1;m<8&&n<8;m++,n++)board[m][n]++;
for(m=i-1,n=i-1;m>=0&&n>=0;m--,n--)board[m][n]++;
for(m=i-1,n=j+1;m>=0&&n<8;m--,n++)board[m][n]++;
for(m=i+1,n=i-1;m<8&&n>=0;m++,n--)board[m][n]++;
}

boolean b=true;
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
if(board[i][j]==0)b=false;
}
}
if(b)break;
}

for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
if(board[i][j]<0)
{
System.out.println(""+i+","+j);
}
}
}
}
}

热心网友 时间:2024-06-13 16:10

伪码可不好写

热心网友 时间:2024-06-13 16:18

用什么语言啊?

热心网友 时间:2024-06-13 16:17

伪码可不好写呵呵
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
找专业防水队做完还漏水怎么维权 法院会受理房屋漏水造成的纠纷吗? 巴西龟最长活多久,家养!!! 养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 请教JAVA大神,八皇后问题代码 【八皇后问题】我自己写的,感觉能通,检查没有语句错误,但运行... 求一个JAVA语言的八皇后问题代码,急!!!要把答案封装成类... 一龙2风是什么意思 左乙拉西坦片 开浦兰 是医保药么 我听大夫说已经变成医保药物了~ 北大... ...号在最近24小时内绑定过三个,已达到限制,...24小时后可以再次... java下如何判断一个汉字是完整的,而不是半个汉字? 手机号1 24 手机号24小时内绑定了两个被限制 请问什么时候才能重 ... 三角带b1350型号的含义 有没有姓年的人 为什么电脑会自动关机,开机后提示TEMP2.exe发生错误,然后关机,为啥? 电脑最近一开机就出现temp.exe遇见无效指令 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 开机显示temp2.exe应用程序错误 我的电脑开机后会出现temp2.exe错误提示,再者就是软驱不停的自检,请... 为什么电脑开机总有temp.exe错误报告怎样处理? 我的电脑一开机就弹出一个“temp2.exe程序出错”的对话框,然后一点就... 每次开机后系统总提示&quot;temp2.exe&quot;这个程序错误,发送错误报告之类的,是... ...但我的文件管理里面的视频项目却没有,怎么删? 手机文件管理中qq文件多了很多莫名其妙的视频,不是广告那些,有人啊有... 左乙拉西坦片在不在石家庄农合的报销范围内 云南的鲜花饼有哪些品牌的口感比较好? 有什么特别好吃的云南鲜花饼做法可以分享? 一年改2次的办法 9点从榆树到延吉客车几点到蛟河服务区,几点到延吉啊? 吉林省蛟河市~和龙都客车吗? 求蛟河到延吉的客车的列车时刻。急!!! 求蛟河到延吉的汽车时间价格或蛟河到和龙的火车时间价格 描写夏天炎热的好句子 郑元畅 出生年月日 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... ...号在最近24小时内绑定过三个,已达到限制,...24小时后可以再次... 演员王红梅的丈夫是干什么工作的 一年内第二次强制修改 铃木雨燕1.2t的四驱车 铃木雨燕有没有四驱的 橱柜是否需要背板? 长安p1uscs75断电后驾驶室的屏幕能乱码吗 一年内怎么改第二次 安徽人在江苏上学能考安徽公安大学吗?