POJ - 1321棋盘问题(DFS)

news/2024/7/8 7:23:40

在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。
Input
输入含有多组测试数据。
每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= 8 , k <= n
当为-1 -1时表示输入结束。
随后的n行描述了棋盘的形状:每行有n个字符,其中 # 表示棋盘区域, . 表示空白区域(数据保证不出现多余的空白行或者空白列)。
Output
对于每一组数据,给出一行输出,输出摆放的方案数目C (数据保证C<2^31)。
Sample Input
2 1
#.
.#
4 4
…#
…#.
.#…
#…
-1 -1
Sample Output
2
1
题意分析:在给定的棋盘内,#表示可以放棋子,在所有#上求在所给定的棋子数量下不同行不同列的可能方案数,跟八皇后有些相似,我用的则是DFS来实现这一过程,具体代码如下:

#include<stdio.h>
#include<string.h>
int n,tot,k,book[20];
char str[20][20];
void dfs(int cur,int y)
{
	int i,j;
	if(y==k)
		tot++;
	else
	{
		for(i=cur;i<n;i++)
		{
			for(j=0;j<n;j++)
			{
				if(str[i][j]=='#'&&book[j]==0)
				{
					book[j]=1;//标记这个点已经走过了
					dfs(i+1,y+1);//然后继续在下一行中寻找,所用的棋子数加一
					book[j]=0;
				}
			}
		}
	}
}
int main()
{
	int i,j;
	while(~scanf("%d%d",&n,&k))
	{
		memset(book,0,sizeof(book));
		if(n==-1&&k==-1)
			break;
		tot=0;
		for(i=0;i<n;i++)
		{
	        getchar();
	        for(j=0;j<n;j++)
	        	scanf("%c",&str[i][j]);
        }
		dfs(0,0);
		printf("%d\n",tot);
	} 
	return 0;
} 

http://www.niftyadmin.cn/n/709661.html

相关文章

FragmentPagerAdapter与FragmentStatePagerAdapter区别

原博客地址: http://www.cnblogs.com/lianghui66/p/3607091.html 在一个 Android 应用中&#xff0c; 我使用 FragmentPagerAdapter 来处理多 Fragment 页面的横向滑动。 不过我碰到了一个问题&#xff0c; 即当 Fragment 对应的数据集发生改变时&#xff0c; 我希望能够通过调…

HDU-2897邂逅明下(巴什博弈)

当日遇到月&#xff0c;于是有了明。当我遇到了你&#xff0c;便成了侣。 那天&#xff0c;日月相会&#xff0c;我见到了你。而且&#xff0c;大地失去了光辉&#xff0c;你我是否成侣&#xff1f;这注定是个凄美的故事。&#xff08;以上是废话&#xff09; 小t和所有世俗的人…

*寒假水32——悼念512汶川大地震遇难同胞——一定要记住我爱你

灾后的救援需要很多的人员&#xff0c;现在又刚刚到达一批志愿者&#xff0c;他们一共有n&#xff08;10<n<1000&#xff09;人&#xff0c;根据指挥部的指示&#xff0c;他们将被分为抢险、医疗以及通信等3个小分队&#xff0c;并且规定&#xff0c;抢险小分队需要占总人…

物联网、云计算、大数据、人工智能怎么区分,又有何关系?

物联网IoT(Internet of things)物联网是互联网的应用拓展&#xff0c;与其说物联网是网络&#xff0c;不如说物联网是业务和应用。因此&#xff0c;应用创新是物联网发展... 物联网IoT(Internet of things) 物联网是互联网的应用拓展&#xff0c;与其说物联网是网络&#xff0…

*寒假水33——悼念512汶川大地震遇难同胞——老人是真饿了

对于幸存的灾民来说&#xff0c;最急待解决的显然是温饱问题&#xff0c;救灾部队一边在组织人员全力打通交通&#xff0c;一边在组织采购粮食。现在假设下拨了一定数量的救灾经费要去市场采购大米&#xff08;散装&#xff09;。如果市场有m种大米&#xff0c;各种大米的单价和…

HDU-4508湫湫系列故事——减肥记I(完全背包)

对于吃货来说&#xff0c;过年最幸福的事就是吃了&#xff0c;没有之一&#xff01;   但是对于女生来说&#xff0c;卡路里&#xff08;热量&#xff09;是天敌啊&#xff01;   资深美女湫湫深谙“胖来如山倒&#xff0c;胖去如抽丝”的道理&#xff0c;所以她希望你能帮…

3-7-队列的链式存储-栈和队列-第3章-《数据结构》课本源码-严蔚敏吴伟民版

课本源码部分 第3章 栈和队列 - 队列的链式存储 ——《数据结构》-严蔚敏.吴伟民版 源码使用说明 链接☛☛☛ 《数据结构-C语言版》&#xff08;严蔚敏,吴伟民版&#xff09;课本源码习题集解析使用说明 课本源码合辑 链接☛☛☛ 《数据结构》课本源码合辑 习题集全解析 链…

阿里云ECS服务器购买流程(超全,新手必备!)-教程配置、运行、建站一条龙

阿里云ECS服务器购买教程 本文提供全图文流程&#xff0c;中文翻译。 Chinar 坚持将简单的生活方式&#xff0c;带给世人&#xff01;&#xff08;拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例&#xff09; Chinar —— 心分享、心创新&#xff01;助力快…