POJ-3740(dfs边界点和还原处理)(Easy Finding)
来源:互联网 发布:ubuntu 32位下载 编辑:程序博客网 时间:2024/05/16 18:45
【题目描述】
选出一些行使得这些行构成矩阵的每一列都有且只有一个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;}
- POJ-3740(dfs边界点和还原处理)(Easy Finding)
- [ACM] POJ 3740 Easy Finding (DFS)
- [ACM] POJ 3740 Easy Finding (DFS)
- POJ 3740 Easy Finding(dfs回溯)
- [ACM] POJ 3740 Easy Finding (DFS)
- POJ 3740 Easy Finding(舞蹈链)
- POJ 3740 - Easy Finding (Dancing links)
- POJ 3740 Easy Finding
- poj 3740 Easy Finding
- poj 3740 Easy Finding
- POJ 3740 Easy Finding
- poj-3740 Easy Finding
- poj - 3740 - Easy Finding(精确覆盖DLX)
- poj 3740 Easy Finding(Dancing Links 精确覆盖)
- [ACM] POJ 3740 Easy Finding (DLX模板题)
- POJ 3740 Easy Finding(DLX精确覆盖裸题)
- POJ 3740 Easy Finding 位运算压缩+DFS or Dancing Links
- POJ 3740 Easy Finding 详细讲解
- SPSS中八类常用非参数检验之四:单样本K-S检验
- T-SQL中GO的意思
- ORA-00603: ORACLE 服务器会话因致命错误而终止
- JSTL实现for(int i)循环
- 关于ATL的rgs注册文件
- POJ-3740(dfs边界点和还原处理)(Easy Finding)
- Android中WebView和JavaScript通信
- 关于xen的杂七杂八 (DomU安装)
- 【Android Training - Connectivity】优化下载的效率[Lesson 2 - 调整定时更新的频率(C2DM与退避算法)]
- 关于v4l2,一些注意de地方
- zend framework的使用(1)
- RED HAT Enterprise Linux 5 JAVA 安装
- linux下usb camera图像采集(V4l2)
- 通过打开文件的fd值,如何找到被打开文件文件的全路径