UVA1603SquareDestroyer
来源:互联网 发布:淘宝能卖视频吗 编辑:程序博客网 时间:2024/06/16 16:27
//UVA1603SquareDestroyer#include<cstdio>#include<cstdlib>#include<cstring> const int MAXN = 5;const int MAX = 100;int n, s;int maxd;char exist[MAX];int fullsize[MAX], size[MAX]; int contain[MAX][MAX]; inline int Match_row(int x, int y) {return (2 * n + 1) * x + y;}inline int Match_col(int x, int y) {return (2 * n + 1) * x + y + n;}void Init() {int k;scanf("%d", &k);memset(contain, 0, sizeof(contain));memset(exist, 1, sizeof(exist));memset(size, 0, sizeof(size));memset(fullsize, 0, sizeof(fullsize));for(int i = 0; i < k; i++) {int tmp;scanf("%d", &tmp);exist[tmp - 1] = 0;}s = 0;//s记录编号所有的正方形 for(int i = 1; i <= n; i++) {for(int x = 0; x <= n - i; x++) {for(int y = 0; y <= n - i; y++) {size[s] = 0;fullsize[s] = i * 4;for(int j = 0; j < i; j++) {int a = Match_row(x, y + j);int b = Match_row(x + i, y + j);int c = Match_col(x + j, y);int d = Match_col(x + j, y + i);contain[s][a] = 1;contain[s][b] = 1;contain[s][c] = 1;contain[s][d] = 1;size[s] += exist[a] + exist[b] + exist[c] + exist[d];}s++;}}}}inline int Square_find() {for(int i = 0; i < s; i++) if(size[i] == fullsize[i]) return i;return -1;}bool Dfs(int d) {int k = Square_find();//printf("k = %d\n", k);if(k == -1) return true;if(d >= maxd) return false;int full = 2 * n * (n + 1); for(int i = 0; i < full; i++) {if(contain[k][i]) {//找到 k 号正方形上的一根棍 // printf("k = %d, i = %d\n", k, i);for(int j = 0; j < full; j++) //找到与k上的i同边的正方形 if(contain[j][i]) size[j]--;//相当于去掉了一个正方形(由判定是否存在正方形的方法可得) if(Dfs(d + 1)) return true;for(int j = 0; j < full; j++)//消除影响 if(contain[j][i]) size[j]++;}}return false;}int main() {int T;scanf("%d", &T);while(T--) {scanf("%d", &n);Init();//printf("s = %d\n", s);//for(int i = 0; i < s; i++) printf("%d: size : %2d\n",i, size[i]);//printf("\n");for(maxd = 1; ; maxd++) {//printf("maxd = %d\n", maxd);if(Dfs(0)) {printf("%d\n", maxd); break;} }}return 0;} /*22033 12 17 23*/
阅读全文
0 0
- UVA1603SquareDestroyer
- Python学习笔记(相比静态语言的一些不同之处)
- WPF/WCF开发教程
- PAT乙级 1020. 月饼 (25)
- ios 手动忽略编译警告
- c++ stl map
- UVA1603SquareDestroyer
- 判断三相电动机线圈好坏的方法
- [BZOJ3378]一套NOIP膜你题:膜拜azui
- Tengine用户访问配置
- 08. Servlet 表单处理
- 在 SharePoint Server 2016 中定义托管路径
- jdbc报错Loading class `com.mysql.jdbc.Driver'. This is deprecated
- js函数(下)
- cookie与session的区别