HDU 1253
来源:互联网 发布:setdefault c语言 编辑:程序博客网 时间:2024/05/21 05:56
#include<iostream>
#include<algorithm>
#include<string.h>
int n,sum,s;
bool b[11][11];
using namespace std;
int main()
{
void dfs(int,int,int);
while (cin >> n)
{
sum = 0; s = 0;
memset(b, false, sizeof(b));
dfs(1,1,0);
cout << s << endl;
}
return 0;
}
void dfs(int q,int w,int sum)
{
if (sum == n)
{
s++; return;
}
bool can(int, int);
for (int i = q; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
if (b[i][j]==false&&can(i, j))
{
sum++;
b[i][j] = true;
dfs(i+1,j,sum);
sum--;
b[i][j] = false;
}
if (j == n) return;
}
}
}
bool can(int x, int y)
{
bool a = 0;
for (int i = 1; ; i++)
{
if (x + i <= n)
{
if (b[x + i][y] == true) return false;
}
else break;
}
for (int i = 1; ; i++)
{
if (x - i >= 1)
{
if (b[x - i][y] == true) return false;
}
else break;
}
for (int i = 1; ; i++)
{
if (y + i <= n)
{
if (b[x][y + i] == true) return false;
}
else break;
}
for (int i = 1; ; i++)
{
if (y - i >= 1)
{
if (b[x][y - i] == true) return false;
}
else break;
}
for (int i = 1; ; i++)
{
if (x + i <= n&&y + i <= n)
{
if (b[x + i][y + i] == true) return false;
}
else break;
}
for (int i = 1; ; i++)
{
if (x + i <= n&&y - i >= 1)
{
if (b[x + i][y - i] == true) return false;
}
else break;
}
for (int i = 1; ; i++)
{
if (x - i >= 1 && y + i <= n)
{
if (b[x - i][y + i] == true) return false;
}
else break;
}
for (int i = 1; ; i++)
{
if (x - i >= 1 && y - i >= 1)
{
if (b[x - i][y - i] == true) return false;
}
else break;
}
return true;
}
n*n的房间 n个皇后 按题意,每行都要放一个,且只能放一个,所以只要放好一个,直接递归下一行便可,每当到一行的最后一个便可return;
没想到这样之后时间依然超时,无奈之下只好用以上程序打表。ac代码如下
#include<iostream>
using namespace std;
int main()
{
int a[12];
a[1] = 1; a[2] = 0; a[3] = 0; a[4] = 2; a[5] = 10;
a[6] = 4; a[7] = 40; a[8] = 92; a[9] = 352;
a[10] = 724; a[11] = 2680;
int n;
while (cin >> n&&n)
{
cout << a[n] << endl;
}
return 0;
}
- hdu 1253
- hdu-1253
- HDU 1253
- HDU 1253
- HDU 1253
- HDU 1253
- hdu 1253
- HDU - 1253
- hdu 1253
- hdu 1253
- HDU 1253
- HDU 1253
- hdu 1253 三维bfs
- HDU 1253(BFS)
- HDU[1253]--bfs
- hdu~1253(bfs)
- hdu 1253 bfs
- hdu 1253 bfs
- Linux下实现视频读取(二)---camera参数设定
- bzoj4408 [Fjoi 2016]神秘数(主席树维护前缀和)
- C/C++串口通信(2)-重叠操作
- 关于资讯机器人的技术与运用解读
- 从游戏脚本语言说起,剖析Mono所搭建的脚本基础
- HDU 1253
- Centos7 ifconfig command not found解决方案
- MAC新建站点配置PHP环境
- 如何用 python 列表解析生成 二维 等差数列 列表
- Debian安装mysql
- Android基于UDP的局域网聊天通信(有完整Demo)
- wordcount实例设计
- 发布一套socket视频教程
- innodb引擎入门