HDU 2553 n皇后问题(回溯法)
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Description
你的任务是,对于给定的N,求出有多少种合法的放置方法。
Input
Output
Sample Input
8
5
0
Sample Output
92
10
按行向量递增搜索,一直到最后一个行向量结束时得到一种放置方法,用b[]保存摆法。
- #include<stdio.h>
- #include<cstring>
- int vis[][];
- int c[];
- int cur,tot;
- int n;
- void search(int cur)
- {
- if(cur==n)
- tot++;
- else for(int i=; i<n; i++)
- {
- if(!vis[][i]&&!vis[][cur+i]&&!vis[][cur-i+n])
- {
- c[cur]=i;
- vis[][i]=vis[][cur+i]=vis[][cur-i+n]=;
- search(cur+);
- vis[][i]=vis[][cur+i]=vis[][cur-i+n]=;
- }
- }
- }
- int main()
- {
- int b[];
- for(n=; n<=; n++)
- {
- memset(vis,,sizeof(vis));
- tot=;
- search();
- b[n]=tot;
- }
- int bn;
- while(scanf("%d",&bn)&&bn)
- {
- printf("%d\n",b[bn]);
- }
- return ;
- }
- #include<iostream>
- #include<cmath>
- using namespace std;
- const int maxn=;
- int b[maxn],a[maxn],sum,n;
- void dfs(int cur)
- {
- if(cur == n+)//递归边界,就有一种摆法
- sum++;
- else
- for(int j = ; j <=n; j++)
- {
- int ok=;
- a[cur] = j;//尝试把第cur行的皇后放在第j列
- for(int i = ; i<cur; i++) //检查是否和前面的皇后冲突
- if(a[i] == a[cur] || abs(i - cur) == abs(a[i] - a[cur]))
- {
- ok=;
- break;
- }
- if(ok)
- dfs(cur+);//如果合法,继续递归
- }
- }
- int main()
- {
- for(int i = ; i <=maxn; i++)
- {
- sum = ;
- n= i;
- dfs();
- b[i] = sum;
- }
- while(cin>>n && n)
- cout<<b[n]<<endl;
- return ;
- }
- #include <cstdio>
- main()
- {
- int n,a[]={,,,,,,,,,,,,};
- while(scanf("%d",&n))
- printf("%d\n",a[n]);
- }
HDU 2553 n皇后问题(回溯法)的更多相关文章
- [HDU 2553]--N皇后问题(回溯)/N皇后问题的分析
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2553 N皇后问题 Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 2553 N皇后问题(回溯 + 剪枝)
本文链接:http://i.cnblogs.com/EditPosts.aspx?postid=5398797 题意: 在N*N(N <= 10)的方格棋盘放置了N个皇后,使得它们不相互攻击(即 ...
- 八皇后问题-回溯法(MATLAB)
原创文章,转载请注明:八皇后问题-回溯法(MATLAB) By Lucio.Yang 1.问题描述 八皇后问题是十九世纪著名数学家高斯于1850年提出的.问题是:在8*8的棋盘上摆放8个皇后,使其不能 ...
- 算法入门经典-第七章 例题7-4-1 拓展 n皇后问题 回溯法
实际上回溯法有暴力破解的意思在里面,解决一个问题,一路走到底,路无法通,返回寻找另 一条路. 回溯法可以解决很多的问题,如:N皇后问题和迷宫问题. 一.概念 回溯算法实际类似枚举的搜索尝试过程,主 ...
- HDU 1016 Prime Ring Problem (回溯法)
Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- HDU 2553 N皇后问题 (DFS_回溯)
Problem Description 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即随意2个皇后不同意处在同一排,同一列,也不同意处在与棋盘边框成45角的斜线上. 你的任务是.对于给定的N ...
- HDU 2553(N皇后)(DFS)
http://acm.hdu.edu.cn/showproblem.php?pid=2553 i表示行,map[i]表示列,然后用DFS遍历回溯 可以参考这篇文章: http://blog.csdn. ...
- hdu 2553 N皇后问题
回溯. 一个主对角线,副对角线的技巧 //vis[0][i]表示第i列有没有皇后 vis[1][cur+i]表示副对角线 vis[2][cur-i+n]表示主对角线 #include <cstd ...
- N皇后问题--回溯法
1.引子 中国有一句古话,叫做“不撞南墙不回头",生动的说明了一个人的固执,有点贬义,但是在软件编程中,这种思路确是一种解决问题最简单的算法,它通过一种类似于蛮干的思路,一步一步地往前走,每 ...
随机推荐
- Cleaning Shifts(区间覆盖)
/* http://acm.hdu.edu.cn/webcontest/contest_showproblem.php?pid=1019&ojid=1&cid=10 题目: 给定一个时 ...
- Linux下profile environment bashrc的区别
先将export LANG=zh_CN加入/etc/profile ,退出系统重新登录,登录提示显示英文.将/etc/profile 中的export LANG=zh_CN删除,将LNAG=z ...
- Spring 基础知识
Spring架构简单描述 原文:https://www.shiyanlou.com/courses/document/212 Spring 概述 1. Spring 是什么 Spring是一个开源的轻 ...
- Git push本地代码到新建远程仓库
快速搞定 1.git init #初始化本地仓库 2.git remote add origin https://git.oschina.net/redArmy/springboot-swagger ...
- mysql 添加定时任务
之前定时任务都是用quartz 或者spring的任务调度来做的,易于管理,但是要写代码加 配置,其实mysql 自带了job ,先创建一个存储过程
- 算法9-5:最大流算法的Java代码
残留网络 在介绍最大流算法之前先介绍一下什么是残留网络.残余网络的概念有点类似于集合中的补集概念. 下图是残余网络的样例. 上面的网络是原始网络.以下的网络是计算出的残留网络.残留网络的作用就是用来描 ...
- provider: 命名管道提供, error: 40 - 无法打开 SQL Server 联系)
李和server连接错误. 在连接 SQL Server 2005 时刻.在默认设置 SQL Server 不同意的远程连接可能导致此故障. (provider: 命名管道提供, error: 40 ...
- Http API设计
Heroku团队根据heroku platform api和他们自己内部系统的实践经验总结了一些http api设计的准则,发布到了github上. 地址:https://github.com/int ...
- 使用APICloud设计物联网APP
0.前言 1).APP功能: 1.控制室内插座的开关. 2.查看室内实时温湿度和温湿度趋势. 3.控制小车的行走,小车摄像头的开启/关闭.移动. 4.查看摄像头监控画面,可拍照并追溯. 5.查看服务器 ...
- SPOJ 3048 - DNA Sequences LCS
给出两个字符串(不长于1000),求最长公共子序列,要求:从每个串中取必须取连续k (1<=k<=100)个数 [LCS]一开始自己想用DP加一维[len]用来表示当前已经取了连续len个 ...