[HDU2553]N皇后问题(DFS)】的更多相关文章

N皇后问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 32229    Accepted Submission(s): 13874 Problem Description 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上.你的任务是,对于给定的N,求…
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2553 题意 n<=10,输出N皇后问题的方法数. 题解 可以使用各种方法.这里使用DFS. 使用一维数组存储棋子位置.col[i]=j表示第i行的棋子放置在j列. 由于n<=10,打表10个结果在数组中即可. dfs(row)表示放置第row层(从0记)的棋子.dfs return条件是到了第n层,此时方法数++; 代码 import java.util.Scanner; public class…
http://acm.hdu.edu.cn/showproblem.php?pid=2553 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上.你的任务是,对于给定的N,求出有多少种合法的放置方法. Input 共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量:如果N=0,表示结束.   Output 共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量.   Sample Input 1 8…
N皇后问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 33731    Accepted Submission(s): 14463 Problem Description 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上.你的任务是,对于给定的N,求…
重看了一下刘汝佳的白板书,上次写八皇后时并不是很懂,再写一次: 方法1:逐行放置皇后,然后递归: 代码: #include <bits/stdc++.h> #define MAXN 8 #define ll long long using namespace std; ll ans=; int c[MAXN]; void dfs(int cur) { if(cur==MAXN) ans++; //***因为是逐行放置的,所以只要走到最后一行则肯定可行 else { ; i<MAXN; i…
N皇后问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 16803    Accepted Submission(s): 7631 Problem Description 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上.你的任务是,对于给定的N,求出…
  N皇后问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 12279    Accepted Submission(s): 5535 Problem Description 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上.你的任务是,对于给定的N,…
n皇后问题指的是: n*n的国际象棋棋盘上摆放n个皇后,使其不能互相攻击, 即任意两个皇后都不能处于同一行.同一列或同一斜线上, 问有多少种摆法. 和一般n皇后问题不同的是,现在棋盘上有可能已经放了一个皇后了. 你能求出有多少合法的方案吗? 多组数据. 第一行有两个数n和m,n<=13表示棋盘大小,m<=1表示棋盘上已经有m个皇后了. 下面m行,每一行有两个数x.y(x,y< n)表示棋盘上x行y列已经有一个皇后了. 思路:打表,然后参考紫书. #include<iostream&…
#include <bits/stdc++.h> using namespace std; const int maxn = 55; int ans=0; int vis_Q[maxn]; int book_col[maxn]; int n; bool judge(int r,int c)//能否放在r行c列判断 { if(book_col[c]==1) return false;//如果这列已经被占用,不行 for(int i=1;i<r;i++) { if(abs(c-vis_Q[i…
  算法提高 8皇后·改   时间限制:1.0s   内存限制:256.0MB      问题描述 规则同8皇后问题,但是棋盘上每格都有一个数字,要求八皇后所在格子数字之和最大. 输入格式 一个8*8的棋盘. 输出格式 所能得到的最大数字和 样例输入 1 2 3 4 5 6 7 89 10 11 12 13 14 15 1617 18 19 20 21 22 23 2425 26 27 28 29 30 31 3233 34 35 36 37 38 39 4041 42 43 44 45 46…