`
lgh1992314
  • 浏览: 315681 次
文章分类
社区版块
存档分类
最新评论

hdoj2553N皇后问题

 
阅读更多

N皇后问题

Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3860Accepted Submission(s): 1801


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
算法入门经典有讲=。=
#include<cstdio>
#include<cstring>
int board[12];
int sum[12]={0};
bool used[3][20];
int n,ans;
void dfs(int cur)
{
	int i;
	if(cur==n)
		ans++;
	else
	{
		for(i=0;i<n;i++)
		{
			if(!used[0][i]&&!used[1][cur+i]&&!used[2][cur-i+n])
			{
				board[cur]=i;
				used[0][i]=used[1][cur+i]=used[2][cur-i+n]=1;
				dfs(cur+1);
				used[0][i]=used[1][cur+i]=used[2][cur-i+n]=0;
			}
		}
	}
}
int main()
{
	while(scanf("%d",&n),n)
	{
		memset(used,0,sizeof(used));
		ans=0;
		if(sum[n]!=0)
			printf("%d\n",sum[n]);
		else
		{
			dfs(0);
			printf("%d\n",ans);
			sum[n]=ans;
		}
	}
	return 0;
}




分享到:
评论

相关推荐

    HDOJ题目分类 HDOJ题目分类

    HDOJ的题目分类系统通常依据题目的难度、涉及的算法类型、问题的背景等要素进行划分,这使得用户可以根据自己的学习进度和兴趣选择适合的题目。例如,初级题目可能涵盖基础的数据结构和算法,如排序、搜索;而高级...

    hdoj.rar_Dividing HDOJ_OJ 1082_hdoj 10_杭电oj_杭电oj1000

    【标题】"hdoj.rar_Dividing HDOJ_OJ 1082_hdoj 10_杭电oj_杭电oj1000" 涉及的知识点主要围绕着“杭电在线判题系统(HDOJ)”以及其中的题目1082和10系列题目。HDOJ是杭州电子科技大学主办的一个在线编程竞赛平台,...

    hdoj2066最短路

    ### 描述分析:“c语言 最短路 是hdoj上的一个最短路问题,写的很牛” - **C语言**:题目解决方案是用C语言编写的。 - **最短路**:该题目要求求解图中的最短路径问题。 - **写的很牛**:暗示提供的代码实现较为...

    HDOJ1002

    ACM ICPC HDOJ1002

    HDOJ 80题 Java

    【标题】"HDOJ 80题 Java"是一份专为Java程序员设计的在线编程挑战集合,源自杭州电子科技大学(HDOJ)的在线评测系统。这些题目旨在帮助Java开发者提升算法理解与编程能力,同时也为那些习惯于C++但希望在Java环境...

    HDOJ1001

    ACM ICPC HDOJ1001

    hdoj1001标程

    hdoj1001标程

    ACM HDOJ 课件

    【ACM HDOJ 课件】是一套涵盖了多种计算机科学竞赛中常见算法与理论的教育资源,主要针对ACM(国际大学生程序设计竞赛)和HDOJ(华中地区大学生在线编程题库)的训练。这些课件深入浅出地讲解了在解决复杂问题时所需...

    HDOJ部分简单题(JAVA)

    HDOJ1000.java HDOJ1001.java HDOJ1089.java HDOJ1090.java HDOJ1091.java HDOJ1092.java HDOJ1093.java HDOJ1094.java HDOJ1095.java HDOJ1108.java HDOJ1406.java HDOJ2001.java HDOJ2002.java HDOJ2003.java HDOJ...

    HDOJ离线版

    6. **培养问题解决能力**:通过解决实际问题,你将学会如何分析问题、设计算法、编写代码,这在软件开发和日常工作中都是至关重要的技能。 总的来说,HDOJ离线版是一个集学习、实践和挑战于一体的编程资源,无论是...

    hdoj1004 解题代码 答案

    hdoj1004,解题代码,答案代码,欢迎下载

    HDOJ1003

    ACM ICPC HDOJ1003

    HDOJ 1008

    ACM ICPC HDOJ1008

    hdoj1005 Number Sequence 代码

    #### 一、问题背景与题目概述 在深入了解代码之前,我们先来了解下题目背景。`hdoj1005 Number Sequence` 是杭州电子科技大学在线评测系统(Online Judge,简称OJ)中的一个编程题目。这类题目通常涉及算法设计与...

    hdoj1002——大整数相加

    本题目来源于杭州电子科技大学的在线评测系统(HDOJ),编号为1002的大整数相加问题。该题目主要考察的是编程者对于大整数处理的基本技巧以及对数组、循环等基础数据结构和算法的理解。 #### 题目要求概述 题目...

    hdoj--acm题目,有注释

    "hdoj--acm题目,有注释" 本资源提供了多个 ACM 题目的解决方案,代码都带有注释,非常适合初学者学习。下面是对每个题目的知识点总结: 2000:本题目要求输入三个字符,输出按照从小到大排序的结果。本代码使用了...

    HDOJ.rar_HD_HDOJ

    【标题】"HDOJ.rar_HD_HDOJ" 是一个与HDU(杭州电子科技大学)在线判题系统HDOJ相关的压缩包文件,其中包含了大量编程题目的源代码。 【描述】提到,这个压缩包包含了几百道HDOJ题目的源代码,这意味着它是一个宝贵...

    hdoj 2013 多校训练4标程+解题报告

    【标题解析】:“hdoj 2013 多校训练4标程+解题报告”这个标题表明,这是一个关于2013年Happy Dream Online Judge(简称hdoj)组织的多校联合编程训练的资料。"4标程"意味着包含了四道题目(或者可能是四个阶段)的...

    HDOJ1000

    ACM ICPC HDOJ1000

    OJ.tar.gz_HDOJ _OJ源码_oj

    【OJ.tar.gz_HDOJ _OJ源码_oj】是一个包含编程竞赛平台HDOJ(Happy Ding Octopus Judge)部分源代码的压缩文件。这个压缩包的主要目的是供学习和研究使用,尤其是针对50至60题目的解题算法和系统实现。通过分析这些...

Global site tag (gtag.js) - Google Analytics