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;
}
本文介绍了解决POJ-1321棋盘问题的方法,采用深度优先搜索(DFS)算法来计算特定条件下放置棋子的方案数。通过递归调用实现对棋盘的不同位置进行探索,确保每个解决方案的有效性。
483

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



