Fliptile POJ
来源:互联网 发布:陌生人交友软件排行 编辑:程序博客网 时间:2024/06/05 09:10
Fliptile POJ - 3279
一开始搞错题意了,输出any of them 总是不对。。。。。。。
清楚题目意思之后还是没能搞清楚思路和any of them差不多,就是需要判断所有情况找出最优的。
此类反转问题主要是别重复的反转多次相同的位置,因为这样是无效的,所以翻转应该是有方向性的。所以首先确定第一行的情况,如果某个位置为1,那么下一行的对应位置就需要翻转,将其变为0,这样保证了影响每个位置的状态的位置只有这个位置的下一行的对应位置的元素。最后判断最后一行是否全为0就可以了。
#include <iostream>#include <string.h>#include <cstdio>#include <algorithm>using namespace std;const int INF = 200;int dx[]={-1,0,0,0,1};int dy[]={0,1,0,-1,0};int map[15][15],flip[15][15],ans[15][15];int m,n;int get(int x,int y)//(x,y)'s color{ int res = map[x][y]; for(int i=0;i<5;i++) { int a=x+dx[i]; int b=y+dy[i]; if(a>=0&&a<m&&b>=0&&b<n) { res+=flip[a][b]; } } return res&1;}int calc(){ for(int i=1;i<m;i++) { for(int j=0;j<n;j++) { if(get(i-1,j)){flip[i][j]=1;} } } for(int i=0;i<n;i++) { if(get(m-1,i)) return INF; } int res = 0 ; for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ res+=flip[i][j]; } } return res;}int main(){ while(~scanf("%d%d",&m,&n)){ for(int i=0;i<m;i++) { for(int j=0;j<n;j++){ scanf("%d",&map[i][j]); } } int res = INF; memset(ans,0,sizeof(ans)); for(int i=0;i< 1<<n;i++) { memset(flip,0,sizeof(flip)); for(int j=0;j<n;j++) { flip[0][j] = i>>j&1; } int temp=calc(); if(temp<res) { res=temp; memcpy(ans,flip,sizeof(flip)); } } if(res==INF) printf("IMPOSSIBLE\n"); else { for(int i=0;i<m;i++) { for(int j=0;j<n;j++) { if(j==0) printf("%d",ans[i][j]); else printf(" %d",ans[i][j]); } printf("\n"); } } } return 0;}
0 0
- Fliptile POJ
- Fliptile POJ
- Fliptile POJ
- Fliptile POJ
- POJ-3279-Fliptile
- POJ 3279 Fliptile
- poj 3279 Fliptile
- POJ 3279 Fliptile
- poj 3279 Fliptile
- POJ 3279 Fliptile
- poj 3279 Fliptile
- Poj 3279 Fliptile 【枚举】
- poj 3297 Fliptile 深搜
- POJ 3279 Fliptile
- POJ 3279 Fliptile
- POJ 3279 Fliptile
- POJ - 3279 Fliptile(DFS)
- poj 3279 Fliptile
- Python 使用import导入模块或者方法
- 中国程序员容易发音错误的单词
- 安装Linux之Ubuntu
- Visual Studio Code + Emmet Web开发
- 写得蛮好的linux学习笔记
- Fliptile POJ
- 基于windows的I/O复用
- C++读二进制文件 及 C++设置double精度
- hello word
- 表格基础
- ASC码表 和 转义字符表
- C语言str函数的源码
- LINUX第5课总结
- 史上最牛JAVA思维导图学习笔记