POJ-3740(dfs边界点和还原处理)(Easy Finding)

原创 2012年03月26日 15:38:38

【题目描述】

选出一些行使得这些行构成矩阵的每一列都有且只有一个1。

【接替思路】

直接判断每一行是否选中。

此方法并不高效。

int m, n;
int Map[16][300];
bool used[300];
bool Find;
bool match()//判断所选取的行是否让每一列都恰好有一个1
{
	int i;
	for (i = 0; i < n; ++i)
		if (used[i] == 0)
			return false;
	return true;
}
bool check(int row)
{
	int i;
	for (i = 0; i < n; ++i) {
		if (used[i] == true && Map[row][i] == 1) {
			return false;
		}
	}
	for (i = 0; i < n; ++i) {
		if (Map[row][i])
			used[i] = true;
	}
}
void dfs(int index)
{
	int i, j;
	if (index > m || Find == true) return ;
	if (match()) {
		Find = true;
		return ;
	}
	for (i = index; i < m && !Find; ++i) {
		if (check(i)) {
			dfs(i + 1);
			for (j = 0; j < n; ++j)
				if (Map[i][j])
					used[j] = false;
		}
	}
	
}
int main()
{
	int i, j;
	while (scanf("%d%d", &m, &n) == 2) {
		for (i = 0; i < m; ++i) {
			for (j = 0; j < n; ++j) {
				scanf("%d", &Map[i][j]);
			}
		}
		memset(used, false, sizeof(used));
		Find = false;
		dfs(0);
		if (Find) {
			printf("Yes, I found it\n");
		} else {
			printf("It is impossible\n");
		}
	}
	return 0;
}


BNUOJ 51277 魔方复原(模拟、置换)

题意: 给定N≤105的三阶魔方操作序列给定N\le10^5的三阶魔方操作序列 由U、D、R、L、F、B操作构成,如下图:由U、D、R、L、F、B操作构成,如下图: 操作序列表...
  • lwt36
  • lwt36
  • 2016年02月11日 23:57
  • 380

Spark流式在hdfs上的一种容错方式

Spark 在hdfs上的一种容错方式 在hdfs上一个指定的目录上,不断的运行wordcount。如果一个文件正在拷贝到hdfs上,但还没有完全复制完,同时被spark检测到并且被认为是新进入的文...
  • zzzzzqf
  • zzzzzqf
  • 2014年04月19日 14:34
  • 1284

海底总动员2:多莉去哪儿 Finding Dory (2016)

海底总动员2:多莉去哪儿 Finding Dory (2016) 最后更新:2016-10-25 window._bd_share_config={"common":{"bdSnsKe...
  • u012798391
  • u012798391
  • 2016年10月25日 23:54
  • 530

用logrotate管理每日增长的日志

logrotate简介 logrotate is designed to ease administration of systems that generate large numbers of...
  • baidu_zhongce
  • baidu_zhongce
  • 2015年12月24日 11:03
  • 1497

mysqlbackup备份和还原

mysqlbackup备份和还原 A.1全库备份. 命令: mysqlbackup --host=127.0.0.1  --user=root --password=root@123 --port=...
  • m18580239676
  • m18580239676
  • 2015年09月11日 09:25
  • 939

【POJ】3740 Easy Finding 精确覆盖入门题

传送门:【POJ】3740 Easy Finding 题目分析:
  • u013368721
  • u013368721
  • 2014年07月28日 17:04
  • 800

图像处理(一)图像变形(1)矩形全景图像还原-Siggraph 2014

最近发现,看过的文章,没几天就忘了,于是开始写点东西记录一下,所学习过的算法。废话不多说,今天看了这篇文献“Rectangling Panoramic Images via Warping”,所以做一...
  • GarfieldEr007
  • GarfieldEr007
  • 2016年01月28日 08:07
  • 909

POJ 3740 Easy Finding(DLX精确覆盖裸题)

POJ 3740 Easy Finding 题目链接 题意:选一些行,要求每行正好覆盖一个列 思路:精确覆盖裸题 代码: #include #include usi...
  • u011217342
  • u011217342
  • 2014年11月17日 21:24
  • 530

图像处理(一)图像变形(1)矩形全景图像还原-Siggraph 2014

最近发现,看过的文章,没几天就忘了,于是开始写点东西记录一下,所学习过的算法。废话不多说,今天看了这篇文献“Rectangling Panoramic Images via Warping”,所以做一...
  • hjimce
  • hjimce
  • 2015年04月06日 18:39
  • 5256

第一次使用Android Studio时你应该知道的一切配置

声明】  欢迎转载,但请保留文章原始出处→_→  生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/s...
  • chenxu6
  • chenxu6
  • 2015年07月24日 16:56
  • 727
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ-3740(dfs边界点和还原处理)(Easy Finding)
举报原因:
原因补充:

(最多只允许输入30个字)