皇后游戏c语言,C语言中关于4皇后或8皇后问题!

满意答案

dcebd7a0de6265b6ccae5ead692f1eab.png

sungminct

2013.11.14

dcebd7a0de6265b6ccae5ead692f1eab.png

采纳率:41%    等级:13

已帮助:5892人

用栈,以及回溯法来做

#include

#include

int place(int b);

int a[10]; //定义栈来记录皇后位置

int main(void)

{

int n; //输入

int k; //第k个皇后

int j; //输出结果用

scanf("%d",&n);

a[1]=0;

k=1; //第一个皇后开始

while(k>0)

{

a[k]=a[k]+1; //第一次是从1开始,以后是退回前一个皇后时这个皇后的位置向后挪一位

while(a[k]<=n&&!place(k)) // 位置合法?

a[k]=a[k]+1; //不合法再向后挪一位

if(a[k]<=n) //位置没有超过合法位置

{

if(k==n) //全部皇后安放完

{

for(j=1;j<=n;j++)// 输出位置

printf("%3d",a[j]);

printf("\n");

}

else //还有皇后没有放

{

k++; //继续放下一个皇后

a[k]=0; //初始化位置

}

}

else //位置不合法

k--; //退回去,回溯

}

return 0;

00分享举报

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值