POJ-1321-ボード問題

724 ワード

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
",ans); } return 0; }