zoukankan      html  css  js  c++  java
  • POJ 2965贪心神解

    貌似和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;
    }

  • 相关阅读:
    express开发实例
    node.js操作mongoDB数据库
    Mysql JDBC Url参数说明useUnicode=true&characterEncoding=UTF-8
    Hibernate 使用说明
    mysql 时间戳与日期格式的相互转换
    MOOC即Massive Open Online Course的缩写
    CentOS+Apache+php无法访问redis的解决方法
    CentOS 6.5下Redis安装详细步骤
    Linux进程基础
    CentOS如何查看端口是被哪个应用/进程占用
  • 原文地址:https://www.cnblogs.com/icode-girl/p/4660894.html
Copyright © 2011-2022 走看看