poj--1753 Flip Game(二维反转)(高斯消元)

该博客介绍了如何解决POJ 1753问题,即如何在4x4的01矩阵中找到最小的反转次数将其转换为全0或全1。博主提供了通过两次二维反转操作,结合高斯消元法来计算最少反转次数的方法,并给出了详细的解题思路链接。
摘要由CSDN通过智能技术生成

给定4乘4的01矩阵,反转成全0或者全1。求最小的反转次数。

http://poj.org/problem?id=1753

解法一:进行两次二维反转,一次算出反转成全0的最少反转次数,一次算出反转成全1的最少反转次数。

详细方法:http://blog.csdn.net/fad_further/article/details/20571099

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int inf = 0x3f3f3f3f;
const int dxy[5][2] = {
  {0, 0}, {1, 0}, {0, 1}, {-1, 0}, {0, -1} };
int a[5][5], opt[5][5], ans, res;
char str[10];
bool judge(int x, int y){
    int ret = a[x][y];
    for(int i=0; i<5; i++){
        int xx = x + dxy[i][0];
        int yy = y + dxy[i][1];
        if(xx >= 0 && xx < 4 && yy >= 0 && yy < 4)
            ret += opt[xx][yy];
    }
    return ret % 2 == 0;
}
void cal(){
    for(int i=1; i<4; i++)
        for(int j=0; j<4; j++)
            if(!judge(i - 1, j)){
                opt[i][j] = 1;
                ans++;
            }
}
void cal2(){
    for(int i=1; i<4; i++)
        for(int j=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值