[问题] 有关八皇后的类似题目

楼主: tony21177   2014-12-10 22:20:37
小弟刚初学程式,遇到一题八皇后的题目,不过再多了城堡,题目是这样的:
在一个(M+N) x (M+N) 的棋盘上放M个皇后 N 个城堡,皇后可走直走斜,城堡只能走直,
所有的棋子互相不能吃掉对方。
输出有几种合法的放法。
详细题目连结:http://ppt.cc/hvpg
小弟的程式码:http://codepad.org/M7fotRz1
我的输出不管怎样都是0,我已经想不到问题出在哪了,
身边又没有人可以讨论(这是我因兴趣学程式最大的阻碍),
只好上来请教各位前辈,我的程式码有哪些错误不合理的地方呢,
我已经卡了好几天了....万分感谢,小弟资质驽钝...
作者: CCWck (干嘛要暱称)   2014-12-10 23:04:00
total=0; printf("%d\n",total);当然always吐出来是0啊你先练习基本功吧 从正确地写一个函数开始
作者: pika0923 (宜安)   2014-12-11 00:25:00
41,57两行似乎应该放在外一层/33,49可能会读到阵列外面
楼主: tony21177   2014-12-11 00:27:00
可是我定义total的地方不是使得total是global变量吗,还是我仍须要用指标方式将total内存位置传入function
作者: CCWck (干嘛要暱称)   2014-12-11 01:14:00
看错了 global 应该没问题 是条件不成立造成total++没跑到
作者: scwg ( )   2014-12-11 03:28:00
同意 pika, 41,57应该没问题, 33,49 row=1,col=0,i=0 就出界了. 另外三个条件 && 好像不太对
作者: KJFC (磁铁猫)   2014-12-11 11:52:00
猛一看以为是 mooc 结果真的是
作者: ji2my (hkt)   2014-12-11 13:52:00
初学的话 尽量不要用global 很容易衍生问题
楼主: tony21177   2014-12-11 21:22:00
谢谢各位的指教,所以我递回的流程顺序没有问题吗?的确是mooc小弟资质不好,进度总是落后很多.....把三个条件式改成||跟递回终止条件不要加row==(M+N-1)答案就对了,但使我不太明了为啥递回终止条件多加了row==(M+N-1)反而是错的呢,我是一行一行放城堡跟皇后的最后放完应该最后一行也是M+N-1才对啊加不加row应该都没才对呀更正后的程式码http://codepad.org/40p6GeOu各位前辈抱歉,我第一颗是从row=1开始放,所以最后放完是row==(M+N)才对
作者: easyget (easyget)   2014-12-16 22:32:00
看到题目,还在想是不是 NTHU MOOC 的内容结果看到连结,还真的是~~~真是太神奇了

Links booklink

Contact Us: admin [ a t ] ucptt.com