博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ACM学习历程—UESTC 1222 Sudoku(矩阵)(2015CCPC H)
阅读量:5049 次
发布时间:2019-06-12

本文共 1902 字,大约阅读时间需要 6 分钟。

题目链接:http://acm.uestc.edu.cn/#/problem/show/1226

题目大意就是构造一个行列和每个角的2*2都是12344*4矩阵。

dfs暴力搜索,不过需要每一步进行判断是否已经出现了重复,如果最后再判断的话复杂度有点高。

代码:

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long longusing namespace std;char str[5][5];int a[5][5];bool vis[5];bool flag;bool judge(int x[][5]){ for (int i = 0; i < 4; ++i) { memset(vis, false, sizeof(vis)); for (int j = 0; j < 4; ++j) { if (!x[i][j]) continue; if (vis[x[i][j]]) return false; else vis[x[i][j]] = true; } } for (int j = 0; j < 4; ++j) { memset(vis, false, sizeof(vis)); for (int i = 0; i < 4; ++i) { if (!x[i][j]) continue; if (vis[x[i][j]]) return false; else vis[x[i][j]] = true; } } for (int i = 0; i <= 2; i += 2) { for (int j = 0; j <= 2; j += 2) { memset(vis, false, sizeof(vis)); for (int xx = 0; xx <= 1; xx++) { for (int yy = 0; yy <= 1; yy++) { if (!x[i+xx][j+yy]) continue; if (vis[x[i+xx][j+yy]]) return false; else vis[x[i+xx][j+yy]] = true; } } } } return true;}void input(){ for (int i = 0; i < 4; ++i) { scanf("%s", str[i]); for (int j = 0; j < 4; ++j) { if (str[i][j] == '*') a[i][j] = 0; else a[i][j] = str[i][j]-'0'; } }}void dfs(int i, int j){ if (flag) return; i += j/4; j %= 4; if (i == 4) { if (judge(a)) { for (int i = 0; i < 4; ++i) { for (int j = 0; j < 4; ++j) printf("%d", a[i][j]); printf("\n"); } flag = true; } return; } if (!judge(a)) return; if (!a[i][j]) { for (int x = 1; x <= 4; ++x) { a[i][j] = x; dfs(i, j+1); a[i][j] = 0; } } else dfs(i, j+1);}void work(){ flag = false; dfs(0, 0);}int main(){ //freopen("test.in", "r", stdin); int T; scanf("%d", &T); for (int times = 1; times <= T; ++times) { printf("Case #%d:\n", times); input(); work(); } return 0;}
View Code

 

转载于:https://www.cnblogs.com/andyqsmart/p/4997382.html

你可能感兴趣的文章
160303、js加密跟后台加密对应
查看>>
026_nginx引用lua遇到的坑
查看>>
找出给定字符串中出现最多的字符和次数
查看>>
IPTV中的EPG前端优化
查看>>
C 字符串操作函数
查看>>
Makefile文件的使用
查看>>
接口测试工具-Jmeter使用笔记(一:运行一个HTTP请求)
查看>>
《BI那点儿事》数据流转换——逆透视转换
查看>>
JVM GC之垃圾收集算法
查看>>
Mybatis源码学习之资源加载(六)
查看>>
第一次配置react native
查看>>
5种常用的相关分析方法
查看>>
Mine Glass 原型
查看>>
Spark是什么
查看>>
K-mean matlab 实现代码
查看>>
登陆功能的实现
查看>>
8.Python爬虫实战一之爬取糗事百科段子
查看>>
延迟反应帮助他们避免了一些冲动消费有钱人喜欢讨价还价
查看>>
rsync+inotifywait
查看>>
C#中的线程(一)入门
查看>>