• POJ_1166_暴搜


    题目描述:

      有3*3的9个时钟,每个始终有0,1,2,3四种可以循环的状态码,每组数据给我们9个时钟的一种状态码。另外还有9种操作,分别使指定位置的时钟状态码加一,求使得9个时钟状态码全部置于0的最少操作数。

    思路:

      可以得知,每种操作数若执行了四次,则等同于不操作,所以每种操作数的次数在0-3之间,另外,题目明确告诉我们,每种状态只有一种答案。4^9,数据规模不大,把9种操作对应的位置存入一个数组,直接爆搜,也不用考虑什么情况。

      后来想了一下,这题应该可以用高斯消元做,效率可以提高很多。

      最后的输出格式多了一个空格,要处理的话比较麻烦,提交竟然AC了。

    #include<cstdio>
    #include<iostream>
    using namespace std;
    
    int move[10][10] = {{},{0,1,1,0,1,1,},{0,1,1,1,},{0,0,1,1,0,1,1},{0,1,0,0,1,0,0,1,},{0,0,1,0,1,1,1,0,1,},
                        {0,0,0,1,0,0,1,0,0,1},{0,0,0,0,1,1,0,1,1,},{0,0,0,0,0,0,0,1,1,1},{0,0,0,0,0,1,1,0,1,1}};
    
    
    int main()
    {
        int a[10];
        for(int i = 1;i <= 9;i++)   cin >> a[i];
        int i1,i2,i3,i4,i5,i6,i7,i8,i9;
        for(i1 = 0;i1 <= 3;i1++)
        for(i2 = 0;i2 <= 3;i2++)
        for(i3 = 0;i3 <= 3;i3++)
        for(i4 = 0;i4 <= 3;i4++)
        for(i5 = 0;i5 <= 3;i5++)
        for(i6 = 0;i6 <= 3;i6++)
        for(i7 = 0;i7 <= 3;i7++)
        for(i8 = 0;i8 <= 3;i8++)
        for(i9 = 0;i9 <= 3;i9++)
        {
            int flag = 0;
            for(int j = 1;j <= 9;j++)
            {
                int sum = a[j];
                sum += i1*move[1][j]+i2*move[2][j]+i3*move[3][j]
                        +i4*move[4][j]+i5*move[5][j]+i6*move[6][j]
                        +i7*move[7][j]+i8*move[8][j]+i9*move[9][j];
                if(sum%4)
                {
                    flag = 1;
                    break;
                }
            }
            if(flag)    continue;
    
            while(i1--) cout << "1 ";
            while(i2--) cout << "2 ";
            while(i3--) cout << "3 ";
            while(i4--) cout << "4 ";
            while(i5--) cout << "5 ";
            while(i6--) cout << "6 ";
            while(i7--) cout << "7 ";
            while(i8--) cout << "8 ";
            while(i9--) cout << "9 ";
            cout << endl;
            return 0;
        }
    }
  • 相关阅读:
    获取linux内核的配置项(包含模块module)_转
    PPP或PPPOE身份验证PAP和CHAP
    iptables用法
    谁能当IBM公司的CEO?
    雷军失势小米痛哭_小米总喜欢花小钱办大事,然后就总是办不好事
    高并发TCP连接数目问题
    Linux定时任务Crontab命令详解_转
    树莓派3B+首次登陆通过网络
    tar包解压后用户名改变
    一些软件设计的原则_转
  • 原文地址:https://www.cnblogs.com/zhurb/p/5836614.html
Copyright © 2020-2023  润新知