BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #45294同步于 2010/10/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

求助,C语言八皇后问题

laoboss
2010/10/26镜像同步18 回复
在C语言书上看见一个八皇后问题,试了半天,发现在点费解,求达人解决。 一个国际象棋的棋盘上,能否放八个皇后,让她们互不侵犯。可以建立一个a[8][8]的数组,给每个方块先赋0,放上皇后后,就会有一个方块不能再放了,将其赋另一个值,最后得出如何在棋盘上放八个皇后。
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
ki机器人#1 · 2010/10/26
我很多年前发过一个。。。用了一个 goto 。。。结果被版上一群书呆子 bs 了好久。。。 【 在 laoboss 的大作中提到: 】 : 在C语言书上看见一个八皇后问题,试了半天,发现在点费解,求达人解决。 : 一个国际象棋的棋盘上,能否放八个皇后,让她们互不侵犯。可以建立一个a[8][8]的数组,给每个方块先赋0,放上皇后后,就会有一个方块不能再放了,将其赋另一个值,最后得出如何在棋盘上放八个皇后。
Xer机器人#2 · 2010/10/26
很多年前。。。还没有这个版。。。 【 在 ki (谁) 的大作中提到: 】 : 我很多年前发过一个。。。用了一个 goto 。。。结果被版上一群书呆子 bs 了好久。。。
renne机器人#3 · 2010/10/26
我想的是弄个栈…… 一个一个放放到不行的地方出栈回上一层改位置 【 在 laoboss (独醒人) 的大作中提到: 】 : 在C语言书上看见一个八皇后问题,试了半天,发现在点费解,求达人解决。 : 一个国际象棋的棋盘上,能否放八个皇后,让她们互不侵犯。可以建立一个a[8][8]的数组,给每个方块先赋0,放上皇后后,就会有一个方块不能再放了,将其赋另一个值,最后得出如何在棋盘上放八个皇后。
q89277718机器人#4 · 2010/10/26
赞:刘汝佳的白书。。。。。。
ki机器人#5 · 2010/10/26
晕,这难道不是经典的回溯算法么?这种东西初二的时候就会做了...... 【 在 renne 的大作中提到: 】 : 我想的是弄个栈…… : 一个一个放放到不行的地方出栈回上一层改位置
foxhunter机器人#6 · 2010/10/26
只有程序了,源码找不到了。。 【 在 laoboss 的大作中提到: 】 : 在C语言书上看见一个八皇后问题,试了半天,发现在点费解,求达人解决。 : 一个国际象棋的棋盘上,能否放八个皇后,让她们互不侵犯。可以建立一个a[8][8]的数组,给每个方块先赋0,放上皇后后,就会有一个方块不能再放了,将其赋另一个值,最后得出如何在棋盘上放八个皇后。 : -- : ................... 附件(55.5KB) Eight_queen.exe
zxsword机器人#7 · 2010/10/26
读Unix网络编程,Stevens就写了不少goto,代码简直太明晰了 运用之妙,存乎一心 我好菜的,换我,我就不敢随意用=。=尽量少用goto的说法还是有道理的,需要积累才能驾驭呀 【 在 ki 的大作中提到: 】 : : 我很多年前发过一个。。。用了一个 goto 。。。结果被版上一群书呆子 bs 了好久。。。 : 【 在 laoboss 的大作中提到: 】 : ...................
ki机器人#8 · 2010/10/26
#include <stdio.h> #include <sys/types.h> ulong search(ulong lb, ulong cb, ulong rb, ulong cnt) { ulong bs; if (~0ul == cb) cnt ++; else for (bs = lb | cb | rb; ~0ul != bs;) { ulong b = ~bs & (bs+1); bs |= b; cnt = search((lb | b) << 1, cb | b, (rb | b) >> 1, cnt); } return cnt; } void main() { printf("%li\n", search(0, ~0ul >> 8, 0,0)); }
dragon2000机器人#9 · 2010/10/26
Sigh……我初学编程的时候是用BASIC……最basic那种,连函数、子程序、if then else都不支持……如果不能够用goto就悲剧了……