HDU-n皇后
来源:互联网 发布:黑马云计算大数据视频 编辑:程序博客网 时间:2024/06/07 00:30
N皇后问题
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 18437 Accepted Submission(s): 8332
Problem Description
在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。
你的任务是,对于给定的N,求出有多少种合法的放置方法。
Input
共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。
Output
共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。
Sample Input
1
8
5
0
Sample Output
1
92
10
AC
#include <stdio.h>#include <string.h>int a[11][11];int s[10];int count=0;int sum;int n;int check(int x,int y){ int i,j; for(i=0;i<x;i++) { if(a[i][y]==1) return 0; }//向上找 for(i=x,j=y;i>=0&&j>=0;i--,j--) { if(a[i][j]==1) return 0; }//左上 for(i=x,j=y;i>=0&&j<n;i--,j++) { if(a[i][j]==1) return 0; }//右上 return 1;}void fun(int m){ int i; if(m==n) { sum++; return; } for(i=0;i<n;i++) { if(check(m,i)) { a[m][i]=1; fun(m+1); a[m][i]=0; } } } /*int main(){ while(scanf("%d",&n)&&n) { memset(a,0,sizeof(a)); count=0; fun(0); printf("%d\n",count); } return 0;} */int main(){ for(n=1;n<=10;n++)//HDU要打表 否则会超时 { memset(a,0,sizeof(a)); sum = 0; fun(0); s[n] = sum; } while(scanf("%d",&n)&&n) { printf("%d\n",s[n]); } return 0;}
(二)
#include <stdio.h>int val[10][10];int count = 0; //方法数 bool judge(int row, int column){ //当前列是否有值 for(int i = 0; i < row; ++i) { if(val[i][column]) return false; } //对角线 for(int i = row, j = column; i >= 0 && j >= 0; --i, --j) { if(val[i][j]) return false; } //反对角线 for(int i = row, j = column; i >= 0 && j < 8; --i, ++j) { if(val[i][j]) return false; } return true;}void fun(int row){ if(row == 8) //递归出口 { ++count; return; } for(int i = 0; i < 8; ++i) { if(judge(row, i)) //判断 { val[row][i] = 1; //标记 fun(row + 1); //下一层 val[row][i] = 0; //去标记 } }}int main(){ fun(0); printf("%d\n", count); return 0;}
0 0
- hdu 2553 N皇后
- HDU N皇后问题
- HDU-n皇后
- hdu 2553 N皇后
- N皇后问题 HDU
- N皇后问题 HDU
- N皇后问题 HDU
- N皇后问题 HDU
- HDU 2553 N皇后问题
- HDU 2553 N皇后问题
- HDU 2553-N皇后问题
- hdu 2553 N皇后问题
- HDU-2553-N皇后问题
- Hdu 2553 N皇后问题
- HDU-2533 N皇后问题
- hdu 2553 (N皇后)
- hdu 2553 N皇后问题
- hdu 2553(N皇后)
- Hive数据类型
- 二叉树的前中后序的非递归遍历算法。
- 初识ReactJS的组件化开发(五):ajax加载评论列表,并定时获取更新
- 微信公众号开发(1)
- for循环中break与i++执行
- HDU-n皇后
- 3-MEMORY MANAGEMENT
- 河南多校大一训练赛 frog(拓展欧几里得)
- 多线程
- 矩阵总结
- java夯实基础系列:装箱、拆箱
- Android OSM无法加载地图
- Kindeditor 使用方法及ThinkPHP图片上传
- JavaScript基础