HDOJ2553-N皇后问题(DFS)
N皇后问题
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 12279 Accepted Submission(s): 5535
你的任务是,对于给定的N,求出有多少种合法的放置方法。
8
5
0
92
10
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int n,cnt;
int vis[];//标记数组
int picture[];//用下标来表示行号,自身存储列号。
bool judge(int r,int r2,int c2)//判断2个皇后是否在棋盘边框成45角的斜线上
{
for(int i=;i<=r;i++)//遍历已经放置皇后的点
{
if(i+picture[i]==r2+c2||i-picture[i]==r2-c2)
return false;
}
return true;
}
void dfs(int row,int column,int num)
{
if(num==n)
{
cnt++;
return;
}
for(int i=;i<n;i++)
if(!vis[i]&&judge(row,row+,i))
{
picture[row+]=i;
//printf("%dorz%dorz%d\n",row+1,i,num);
vis[i]=;
dfs(row+,i,num+);
vis[i]=;
}
}
int main()
{
while(~scanf("%d",&n))
{
cnt=;
memset(vis,,sizeof(vis));
memset(picture,,sizeof(picture));
for(int i=;i<n;i++)
{
vis[i]=;
picture[]=i;
dfs(,i,);
vis[i]=;//回溯法:还原标记
}
printf("%d\n",cnt);
}
return ;
}
通过上面代码得到10种情况答案。下面是AC代码
#include <cstdio>
#include <iostream>
int a[]={,,,,,,,,,,};
int n;
int main()
{
while(~scanf("%d",&n))
{if(n==)
break;
printf("%d\n",a[n]);}
return ;
}
HDOJ2553-N皇后问题(DFS)的更多相关文章
- 八皇后(dfs+回溯)
重看了一下刘汝佳的白板书,上次写八皇后时并不是很懂,再写一次: 方法1:逐行放置皇后,然后递归: 代码: #include <bits/stdc++.h> #define MAXN 8 # ...
- n皇后问题<dfs>
n皇后问题指的是: n*n的国际象棋棋盘上摆放n个皇后,使其不能互相攻击, 即任意两个皇后都不能处于同一行.同一列或同一斜线上, 问有多少种摆法. 和一般n皇后问题不同的是,现在棋盘上有可能已经放了一 ...
- 八皇后问题 dfs/递归
#include <bits/stdc++.h> using namespace std; const int maxn = 55; int ans=0; int vis_Q[maxn]; ...
- 蓝桥杯 算法提高 8皇后·改 -- DFS 回溯
算法提高 8皇后·改 时间限制:1.0s 内存限制:256.0MB 问题描述 规则同8皇后问题,但是棋盘上每格都有一个数字,要求八皇后所在格子数字之和最大. 输入格式 一个8*8 ...
- HDU2553 N皇后问题——DFS
N皇后问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- hdu2553N皇后问题(dfs,八皇后)
N皇后问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- n皇后问题--DFS输出棋盘
N皇后问题 Problem Description 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上.你的任务是,对 ...
- hdu 2553 N皇后问题 (DFS)
N皇后问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- HDOJ2553(2N皇后问题)
N皇后问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
随机推荐
- Linux usb子系统(三):通过usbfs操作设备的用户空间驱动
内核中提供了USB设备文件系统(usbdevfs,Linux 2.6改为usbfs,即USB文件系统),它和/proc类似,都是动态产生的.通过在/etc/fstab文件中添加如下一行:none /p ...
- mysql-error --(ERROR 1135 (HY000): Can't create a new thread (errno 11); if you are not out)
报错信息: ERROR 1135 (HY000): Can't create a new thread (errno 11); if you are not out 解决办法: # 查看限制情况 [r ...
- 集合操作出现的ConcurrentModificationException(源码分析)
摘要: 为了保证线程安全,在迭代器迭代的过程中,线程是不能对集合本身进行操作(修改,删除,增加)的,否则会抛出ConcurrentModificationException的异常. 示例: publi ...
- The account is locked
SQL> select * from v$version where rownum=1; BANNER --------------------------------------------- ...
- Git 笔记二-Git安装与初始配置
git 笔记二-Git安装与初始配置 Git的安装 由于我日常生活和工作基本上都是在Windows上,因此此处只说windows上的安装.Windows上的安装和其他程序一样,只需要到http://g ...
- ArrayList的分析(转)
一. ArrayList概述: ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存. ArrayList不是线程安全的,只能用在单线程环境 ...
- RMAN简单备份
检查目标数据库是否处于归档模式: . 检查数据库模式: sqlplus /nolog conn /as sysdba archive log list (查看数据库是否处于归档模式中) 若为非归档,则 ...
- Asp.net文件缓存依赖
Asp.net文件缓存依赖 using System; using System.Collections.Generic; using System.Linq; using System.Web; u ...
- MagicalRecord(简化CoreData操作)
1.新建项目不勾选coredata 2.pod 'MagicalRecord' 3.新建模型文件 4.添加实体和属性 5.Create NSManagedObject subclass 6.增 Per ...
- Oracle创建主键自增表
Oracle创建主键自增表 1.创建表 create table Test_Increase( userid number(10) NOT NULL primary k ...