HDU 2553 N皇后问题(经典的回溯问题)
来源:互联网 发布:fwt算法 编辑:程序博客网 时间:2024/05/16 08:01
我的这个把注释去掉就可以输出满足时的棋盘。
提前打表,不然会超时
#include<stdio.h>#include<string.h>int count;int n;int isExist(int i, int j, int (*Q)[11]) { int s, t; for (s = i, t = 0; t < n; t++) { if (Q[s][t] && t != j) return 0; } for (s = 0, t = j; s < n; s++) { if (Q[s][t] && s != i) return 0; } for (s = i-1, t = j-1; s >= 0 && t >= 0; s--, t--) { if (Q[s][t]) return 0; } for (s = i-1, t = j+1; s >= 0 && t < n; s--, t++) { if (Q[s][t]) return 0; } for (s = i+1, t = j-1; s < n && t >= 0; s++, t--) { if (Q[s][t]) return 0; } return 1;}void Que (int j, int (*Q)[11]) { int s, t; if (j == n) {// for (s = 0; s < n; s++) {// for (t = 0; t < n; t++) {// printf("%d ", Q[s][t]);// }// putchar('\n');// }// printf("\n"); count++; return ; } for (s = 0; s < n; s++) { if (isExist(s, j, Q)) { Q[s][j] = 1; Que(j+1, Q); Q[s][j] = 0; } }}int main(void){ int Q[11][11], i, num[15]; for (i = 1; i < 11; i++) { count = 0; memset(Q, 0, sizeof(Q)); n = i; Que(0, Q); num[i] = count; } while (scanf("%d", &n) != EOF && n) { printf("%d\n", num[n]); } return 0;}
阅读全文
0 0
- HDU 2553 N皇后问题(经典的回溯问题)
- HDOJ 2553 N皇后问题(经典回溯)
- 回溯经典-n皇后问题
- 经典回溯问题----n皇后
- hdu 2553 N皇后问题(DFS+回溯)
- 【回溯】hdu 2553 N皇后问题
- hdu 2553 N皇后问题(回溯)
- HDU 2553 - N皇后问题 [回溯法]
- 【dfs+回溯】hdu 2553 N皇后问题
- hdu 2553 N皇后问题(回溯)
- hdu 2553 N皇后问题 dfs回溯
- hdu 2553 N皇后问题(dfs+回溯)
- HDU 2553 n皇后问题(回溯)
- HDU 2553 n皇后问题(回溯)
- 经典回溯算法之N皇后问题
- 经典回溯算法之n皇后问题
- 回溯法的一个经典实例-n皇后问题
- N皇后问题--回溯算法的经典实例
- Luogu 3381(最小费用流)
- Wireshark抓取VIP视频(博客学习)
- springboot控制层生成图片验证码
- 浮点数精度控制方式总结(含mysql和java)
- c#泛型集合
- HDU 2553 N皇后问题(经典的回溯问题)
- javaBean验证框架(7)—使用@valid实现对象关联验证
- java 自定义异常
- 免费的https申请以及教程
- Python高级编程-如何读写文本文件?
- java web项目图片上传
- 转 关于二维数组初始化的一个小细节
- python复制方法
- 嵌入式学习历程【2】 Linux的基本命令