POJ 1321-棋盘问题 简单搜索DFS
来源:互联网 发布:java 泛型类 静态方法 编辑:程序博客网 时间:2024/05/21 06:52
#include<stdio.h> //POJ 1321-棋盘问题 简单搜索DFS
#include<string.h> // http://acm.pku.edu.cn/JudgeOnline/problem?id=1321
char c[10][10];
int f,ans,vis[20],n,k;
void dfs(int m,int i)
{
int nn,l,ii;
//printf("dffvcfb %d %d\n",m+1,i+1);
if(vis[i]==1) return; //vis[i]为当前列数标记
f++,vis[i]=1; //f为已摆放棋子个数
if(f==k)
{
//printf("dffvcfb\n");
ans++,f--,vis[i]=0;
return;
}
for(nn=m+1;nn<n;nn++) //重复遍历,从下一行开始
{
l=strlen(c[nn]);
for(ii=0;ii<l;ii++)
if(c[nn][ii]=='#') dfs(nn,ii);
}
f--;
vis[i]=0; // 没这个 wa了几次 ~~
return;
}
int main()
{
int m,l,i;
while(~scanf("%d%d",&n,&k)) //n为行列数,k为需摆放棋子个数
{
if(n==-1||k==-1) break;
ans=0,f=0;
memset(c,0,sizeof(c));
memset(vis,0,sizeof(vis));
getchar();
for(m=0;m<n;m++)
gets(c[m]); //存数据
for(m=0;m<n;m++) //遍历每个'#',将其作为第一个放置的棋子
{
l=strlen(c[m]);
for(i=0;i<l;i++)
if(c[m][i]=='#')
{
//printf("%d\n",m+1);
dfs(m,i);
memset(vis,0,sizeof(vis));
}
}
printf("%d\n",ans);
}
}
/*
2 1
#.
.#
4 3
#..#
..#.
.#..
#..#
4 2
...#
.##.
.#..
##.#
4 2
...#
..#.
.#..
#...
4 2
...#
.#..
.#..
#...
4 2
....
....
.#..
#...
2 2
##
##
3 2
###
.##
###
-1 -1
*/
#include<string.h> // http://acm.pku.edu.cn/JudgeOnline/problem?id=1321
char c[10][10];
int f,ans,vis[20],n,k;
void dfs(int m,int i)
{
int nn,l,ii;
//printf("dffvcfb %d %d\n",m+1,i+1);
if(vis[i]==1) return; //vis[i]为当前列数标记
f++,vis[i]=1; //f为已摆放棋子个数
if(f==k)
{
//printf("dffvcfb\n");
ans++,f--,vis[i]=0;
return;
}
for(nn=m+1;nn<n;nn++) //重复遍历,从下一行开始
{
l=strlen(c[nn]);
for(ii=0;ii<l;ii++)
if(c[nn][ii]=='#') dfs(nn,ii);
}
f--;
vis[i]=0; // 没这个 wa了几次 ~~
return;
}
int main()
{
int m,l,i;
while(~scanf("%d%d",&n,&k)) //n为行列数,k为需摆放棋子个数
{
if(n==-1||k==-1) break;
ans=0,f=0;
memset(c,0,sizeof(c));
memset(vis,0,sizeof(vis));
getchar();
for(m=0;m<n;m++)
gets(c[m]); //存数据
for(m=0;m<n;m++) //遍历每个'#',将其作为第一个放置的棋子
{
l=strlen(c[m]);
for(i=0;i<l;i++)
if(c[m][i]=='#')
{
//printf("%d\n",m+1);
dfs(m,i);
memset(vis,0,sizeof(vis));
}
}
printf("%d\n",ans);
}
}
/*
2 1
#.
.#
4 3
#..#
..#.
.#..
#..#
4 2
...#
.##.
.#..
##.#
4 2
...#
..#.
.#..
#...
4 2
...#
.#..
.#..
#...
4 2
....
....
.#..
#...
2 2
##
##
3 2
###
.##
###
-1 -1
*/
0 0
- POJ 1321-棋盘问题 简单搜索DFS
- POJ 1321-棋盘问题 简单搜索DFS
- POJ 1321-棋盘问题-简单搜索DFS
- POJ 1321棋盘问题(简单搜索dfs回溯)
- poj 1321 棋盘问题 dfs搜索
- POJ 1321 棋盘问题 简单的DFS
- poj 1321 棋盘问题 简单dfs
- POJ 1321 棋盘问题(简单dfs)
- POJ 1321 棋盘问题(简单搜索)
- POJ 1321【棋盘问题】 简单搜索
- POJ 1321-棋盘问题【简单搜索】
- poj 1321 棋盘问题(简单搜索)
- POJ 1321棋盘问题(简单搜索)
- poj 1321棋盘问题(简单搜索)
- POJ 1321 棋盘问题 简单搜索
- POJ 1321 棋盘问题(DFS深度优先搜索/回溯法)
- POJ 1321 棋盘问题类似八皇后 dfs搜索
- POJ 1321 棋盘问题(DFS深度优先搜索/回溯法)
- #ifdef,#else,#endif,#if用法详解
- Js屏蔽键盘输入的某些字符,用以部分代替正则表达式
- 图片自适应uiimageview
- 双向链表--主要操作
- 关于在Android开发中使用模糊透明效果的方法
- POJ 1321-棋盘问题 简单搜索DFS
- HDU 1686 KMP
- Deepin/Ubuntu下搭建Golang开发环境
- linux socket 进程间通信
- [cocos2dx]重要父类——CCObject对象类
- HTTP请求报文和HTTP响应报文
- 小工具使用
- ios7,ios8中UITextView文字会自动垂直居中的问题
- maven基础命令