POJ-1321-棋盘问题
http://poj.org/problem?id=1321
基本的DFS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int n,t,ans;
char map[10][10];
int visit[10];
void dfs(int x,int y)
{
int i;
if(y==t)
{
ans++;
return;
}
if(x>=n)
return;
for(i=0;i<n;i++) //x行放棋子
{
if(!visit[i]&&map[x][i]=='#')
{
visit[i]=1;
dfs(x+1,y+1);
visit[i]=0;
}
}
dfs(x+1,y); //x行不放棋子
}
int main()
{
int i;
while(scanf("%d%d",&n,&t),n!=-1&&t!=-1)
{
for(i=0;i<n;i++)
scanf("%s",map[i]);
ans=0;
memset(visit,0,sizeof(visit));
dfs(0,0);
printf("%d\n",ans);
}
return 0;
}
本文详细介绍了如何使用深度优先搜索(DFS)解决棋盘问题。通过实例演示,阐述了算法实现步骤,并提供了关键代码段,帮助读者理解并应用DFS解决类似问题。
484

被折叠的 条评论
为什么被折叠?



