N皇后问题 hdu2553
2016-05-14 17:04
344 查看
#include <iostream>
#include <cstring>
using namespace std;
#define N 20
int dp
, a
;
int n, tmp;
void dfs(int k);
int judge(int x,int y);
int main()
{
memset(a,0,sizeof(a));
for(n=1;n<=10;n++)//时间复杂度
{
tmp=0;
dfs(1);
dp
=tmp;
}
int t;
while(cin>>t,t!=0)
{
cout<<dp[t]<<endl;
}
return 0;
}
void dfs(int k)
{
if(k==n+1)
{
tmp++;
return ;
}
else
{
for(int i=1;i<=n;i++)
{
if(judge(k,i)==1)
{
a[k][i]=-1;
dfs(k+1);
a[k][i]=0;
}
}
}
return ;
}
int judge(int x,int y)
{
for(int i=1;i<=n;i++)
{
if(a[x][i]==-1||a[i][y]==-1)
return -1;
for(int j=1;j<=n;j++)
{
if((i+j==x+y||x-y==i-j)&&a[i][j]==-1)//对角线的含义
{
return -1;
}
}
}
return 1;
}
相关文章推荐
- js中indexOf()方法和toFixed()方法
- java中Comparator的用法
- Windows用socket实现文件传输
- Ubuntu和FreeBSD即将合体:UbuntuBSD
- Secretary Problem
- Python爬虫技巧总结
- Linux之grep命令
- 登录注册实现(服务器数据)
- 表单验证与Json配合
- 聊聊同步、异步、阻塞与非阻塞
- 进程间通信三(共享内存)
- tarjan算法--cojs 1298. 通讯问题
- latex figure \label 放在\caption 后
- volatile关键字
- Git for windows 发布2.8.0版本
- easyui 使用随笔
- C 函数值传递和指针传递的效率问题
- iOS-tableView底部按钮的添加
- Sublime Text3 好用的插件
- android开发笔记之多媒体—大图片的加载