poj1321棋盘问题(深搜)
来源:互联网 发布:超跑和f1知乎 编辑:程序博客网 时间:2024/06/07 03:58
题目链接:click here~
题目解析: 类似于八皇后问题,逐行进行搜索,然后要判断不能在同一列中,由于k<n,所以在原先八皇后问题的基础之上也即for循环之后再加一个dfs().
代码如下:
#include<cstdio>#include<cstring>char chess[10][10];int flag[10][10];int ans;int n,k;bool judge(int r,int c){ for(int i=r-1;i>=0;i--) if(flag[i][c]) return false; for(int j=r+1;j<=n-1;j++) if(flag[j][c]) return false; return true;}void dfs(int row,int num){ if(num==k) { ans++; return; } if(row==n) return; for(int i=0;i<n;i++) //对每一列进行搜索 { if(chess[row][i]=='#'&&!flag[row][i]&&judge(row,i)) //说明当前位置可以放棋子 { flag[row][i]=1; dfs(row+1,num+1); flag[row][i]=0; } } dfs(row+1,num);}int main(){ while(scanf("%d%d",&n,&k)!=EOF) { if(n==-1&&k==-1) break; for(int i=0;i<n;i++) scanf("%s",chess[i]); memset(flag,0,sizeof(flag)); ans=0; dfs(0,0); printf("%d\n",ans); } return 0;}
0 0
- poj1321棋盘问题(深搜)
- poj1321-棋盘问题(深搜)
- 棋盘问题(POJ1321)
- poj1321 棋盘问题(深搜dfs)
- POJ1321 棋盘问题(DFS)
- poj1321--棋盘问题(DFS)
- poj1321 棋盘问题(DFS)
- POJ1321 棋盘问题(DFS)
- POJ1321 棋盘问题(dfs)
- POJ1321 棋盘问题(dfs)
- poj1321棋盘问题(DFS)
- poj1321棋盘问题(dfs)
- poj1321棋盘问题(dfs)
- 棋盘问题(poj1321)dfs
- poj1321 棋盘问题 (dfs)
- POJ1321棋盘问题(DFS)
- POJ1321 棋盘问题(DFS||状压DP)
- poj1321 棋盘问题(状态压缩)
- 2、有一段文本,将文本中的所有单词,存放到一个字符指针数组中(要求每个单词内存恰好)。
- 保函
- servlet 简例简析
- Discuz! X3 win Apache迁移到linux nginx后打开文章内容出现404解决办法
- 10个常见的缓存使用误区
- poj1321棋盘问题(深搜)
- ubuntu 12.04英文版设置成中文版
- 每个程序员应该知道的WEB开发的那些事儿
- 如果我再次被面试,我会问的几个问题
- expdp/impdp的EXCLUDE/INCLUDE用法
- 套接字中send和recv函数详解
- poj2299 Ultra-QuickSort(树状数组求逆序数,离散化)
- Sonatype Nexus 搭建Maven 私服
- 程序员每年要做的十件事