八皇后C语言运行结果,八皇后问题,输出了所有情况,不过有些结果只是旋转了90度而已...

2015-11-20 06:30:05

阅读( 34 )

八皇后问题,输出了所有情况,不过有些结果只是旋转了90度而已。(回溯算法的典型例题,是数据结构书上算法的具体实现,大家都亲自动手写过这个程序吗?)

#define N 8

int Board[N][N];

int Valid(int i, int j) {  // 判断下棋位置是否有效

int k = 1;

for(k=1; i>=k && j>=k;k++)

if(Board[i-k][j-k]) return 0;

for(k=1; i>=k;k++)

if(Board[i-k][j])  return 0;

for(k=1; i>=k && j+k

if(Board[i-k][j+k]) return 0;

return 1;

}

void Trial(int i, int n) {  // 寻找合适下棋位置

if(i == n) {

for(int k=0; k

for(int m=0; m

printf(“%d “, Board[k][m]);

printf(“\n”);

}

printf(“\n”);

} else {

for(int j=0; j

Board[i][j] = 1;

if(Valid(i,j))

Trial(i+1, n);

Board[i][j] = 0;

}

}

}

int main(int argc, char* argv[]) {

Trial(0, N);

}

分享给朋友:

亲~ 如果您有更好的答案 可在评论区发表您独到的见解。

您想查看更多的信息:

面试题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值