码迷,mamicode.com
首页 > 其他好文 > 详细

POJ 2965贪心神解

时间:2015-07-20 12:29:26      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:

貌似和POj1753一样是一般都是用为位运算+枚举做的。但是捏。这里用了贪心算法很容易。怎么样才能做到只把当前位置的+改为-而不改变其它所有位置的符号呢。嗯。就是把当前位置所在的行和列所在的元素都反转一次。最后统计操作数是记数的位置就是要操作的位置。详见代码:

#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;

char m;
int num[5][5];

int main()
{
    memset(num, 0, sizeof(num));
    for (int i=0; i<4; ++i)
    {
        for (int j=0; j<4; ++j)
        {
            cin >> m;
            if (m == ‘+‘)
            {
                for (int k=0; k<4; ++k)
                {
                   num[i][k]++;
                   num[k][j]++;
                }
                num[i][j]--;
            }
        }
    }
    int tot = 0;
    for (int i=0; i<4; ++i)
    {
        for (int j=0; j<4; ++j)
        {
            tot += num[i][j] % 2;
        }
    }
    cout << tot << endl;
    for (int i=0; i<4; ++i)
    {
        for (int j=0; j<4; ++j)
        {
            if (num[i][j] % 2)
            {
                cout << i+1 << ‘ ‘ << j+1 << endl;
            }
        }
    }
    return 0;
}

POJ 2965贪心神解

标签:

原文地址:http://www.cnblogs.com/icode-girl/p/4660894.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!