Poj1681 【枚举】
来源:互联网 发布:网络用语pm是什么意思 编辑:程序博客网 时间:2024/09/21 09:20
#include<stdio.h>#include<string.h>#include<math.h>#include<stdlib.h>int map[16][16], temp[16][16], row[16];int n, min, cnt;void meiju(int x)//枚举所有绘画情况{ memset(row, 0, sizeof(row)); int i = 0; while(x) { row[i++] = x&1; x >>= 1; }}void paint(int x,int y)//画一格{ temp[x][y] = !temp[x][y]; if(x-1 >= 0) temp[x-1][y] = !temp[x-1][y]; if(y-1 >= 0) temp[x][y-1] = !temp[x][y-1]; if(x+1 < n) temp[x+1][y] = !temp[x+1][y]; if(y+1 < n) temp[x][y+1] = !temp[x][y+1]; cnt++;}void check()//根据第一行进行暴力检查{ //如果上一行的当前列不是黄色则对当前行当前列进行绘画 for(int i = 1; i < n; ++i) { for(int j = 0; j < n; ++j) { if(temp[i-1][j] != 1) paint(i,j); } } //检查经过绘画后的最后一行是否全为黄色 for(int i = 0; i < n; ++i) { if(temp[n-1][i] != 1) return; //不全为黄色说明此种绘画方法失败 } if(min > cnt) //成功则保存最小的次数 min = cnt;}int main(){ int i, j, k, t; scanf("%d", &t); while(t--) { scanf("%d", &n); min = n*n + 1; //求出画的最小次数 char s[16]; for(i = 0; i < n; ++i)//输入字符 { scanf("%s", s); for(j = 0; j < n; ++j) { if(s[j] == 'w') //白色标记为0 map[i][j] = 0; else map[i][j] = 1; } } k = pow(2.0,n); //枚举第一行所有画的情况 for(i = 0; i < k; ++i) { meiju(i); cnt = 0; //初始化 memcpy(temp, map, sizeof(map)); for(j = 0; j < n; ++j) //画出第一行 { if(row[j] == 1) paint(0,j); } check(); } if(min == n*n+1) printf("inf\n"); else printf("%d\n", min); } return 0;}
题意:给出一个画板,画板上有n*n个格子,初始状态上随机格数黄色和白色,可以对其中一个格子进行变色,每进行一次变色该格子的上下左右四个格子都需要变色,问需要多少次变色可使所有格子变成黄色,若有多种可能取次数最小的,若无可能则输出inf。
思路:对第一行所有可能的变色情况进行枚举,然后根据第一行的颜色逐行推出下一行的变色情况,最后判断最后一行的颜色是否全为黄色,如果是则说明可行,保存最小的次数。
0 0
- Poj1681 【枚举】
- poj1681 高斯消元+dfs枚举
- poj1681
- 高斯消元异或枚举变元(poj1681)
- POJ1681 Painter's Problem 高斯消元+枚举
- 枚举—案例(画家问题poj1681)
- POJ1681画家问题(枚举)采用位运算
- poj1681 高斯消元
- poj1681(高斯消元)
- poj1681 高斯消元
- Painter's Problem POJ1681
- POJ1681高消+搜索
- [POJ1681]画家问题
- POJ1681-Painter's Problem
- poj1681 Painter's Problem 高斯消元
- poj1681 Painter's Problem 高斯消元
- POJ1681 Painter's Problem【高斯消元法】
- Painter's Problem POJ1681 高斯消元
- java集合框架LinkedList类的方法理解
- java解惑--谜题2:找零时刻
- BZOJ 1965 快速幂 + 拓展欧几里得
- Codeforces Round #335 606A - Magic Spheres
- MMO近期经验总结
- Poj1681 【枚举】
- ehcache
- python 中的counter类用法。重要
- python 中的counter类用法。重要
- 深入分析JavaWeb Item16 -- jsp 四大域(属性)范围
- #学习笔记#(11)四分圆环-photoshop
- 求40+的阶乘
- ajax发送异步请求的步骤
- 2015年大二上-数据结构-数组与广义表(1)-猴子选大王(数组版)