hdu2553解题报告
来源:互联网 发布:武汉广电网络客服电话 编辑:程序博客网 时间:2024/06/06 02:31
经典的dfs:N皇后,开始看了刘汝佳前辈的书..代码简单明了...就是理解起来有点....哎哎...于是就自己用dfs模板加了一个判断,还有就是这里用到打表...对于N<=10 我们可以把N从1~10的情况都dfs出来存在一个数组,后面就直接取用,如果对于每一次输入dfs就会超时....
因为是逐行填写,,那么就只要考虑下图的三个方向(红的的)
上马:
#include<stdio.h>#include<string.h>int N;int ans;int map[14][14];int vis[3][2]={{-1,1},{-1,0},{-1,-1}};//这里是判断要用到的,对于这个位置的左右对角,和这一列看有没有填写过bool judg(int x,int y){for(int i=0;i<3;i++)//因为这里是逐行填写,就不用考虑这一行有没有出现,只要考虑三个方向{int a=x+vis[i][0],b=y+vis[i][1];while(!map[a][b]){a+=vis[i][0];b+=vis[i][1];}if(a>=0&&b>=0&&b<N)return false;}return true;}void dfs(int step){int i;if(step==N){ans++;return;}for(i=0;i<N;i++)//这里是从0到N行是否可以填数{if(!map[step][i] && judg(step,i))//进行3个方向判断有没有填写过{map[step][i]=1;dfs(step+1);map[step][i]=0;}}}int main(){int q[11];for(N=1;N<11;N++){ memset(map,0,sizeof(map)); ans=0; dfs(0); q[N]=ans;}while(scanf("%d",&N),N){printf("%d\n",q[N]);}return 0;}个人愚昧观点...欢迎指正与讨论
- hdu2553解题报告
- hdu2553
- hdu2553
- HDU2553
- HDU2553
- hdu2553
- HDU2553
- HDU2553
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- Antiprime解题报告
- expr解题报告
- 华容道解题报告
- next_permutation 与 prev_permutation的用法 (全排列)
- POJ 3274 Gold Balanced Lineup
- java web从零单排第1期之《运行第一个jsp》
- 伪教练技术培训之殇-2013年9月江西IDC拓行榜与综述
- Python学习笔记4--一个实例(塔防游戏)
- hdu2553解题报告
- C++ MFC学习笔记三
- HTTP协议——代理
- JUnit入门教程(二)
- 对新手有用的JavaScript开发小建议
- [安卓破解]快手看片,破解版,无广告
- IIS处理并发请求时出现的问题及解决
- QFileDialog
- NS2中接收信号强度获取