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;
    }
}
时间: 2024-08-05 14:54:00

POJ_1166_暴搜的相关文章

子矩阵(暴搜(全排列)+DP)

子矩阵(暴搜(全排列)+DP) 一.题目 子矩阵 时间限制: 1 Sec  内存限制: 128 MB 提交: 1  解决: 1 [提交][状态][讨论版] 题目描述 给出如下定义: 1. 子矩阵:从一个矩阵当中选取某些行和某些列交叉位置所组成的新矩阵(保持行与列的相对顺序)被称为原矩阵的一个子矩阵. 例如,下面左图中选取第2.4行和第2.4.5列交叉位置的元素得到一个2*3的子矩阵如右图所示. 9 3 3 3 9 9 4 8 7 4 1 7 4 6 6 6 8 5 6 9 7 4 5 6 1 的

【BZOJ-3033】太鼓达人 欧拉图 + 暴搜

3033: 太鼓达人 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 204  Solved: 154[Submit][Status][Discuss] Description 七夕祭上,Vani牵着cl的手,在明亮的灯光和欢乐的气氛中愉快地穿行.这时,在前面忽然出现了一台太鼓达人机台,而在机台前坐着的是刚刚被精英队伍成员XLk.Poet_shy和lydrainbowcat拯救出来的的applepi.看到两人对太鼓达人产生了兴趣,applepi果断闪

c++20701除法(刘汝佳1、2册第七章,暴搜解决)

20701除法 难度级别: B: 编程语言:不限:运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述     输入正整数n,按从小到大的顺序输出所有满足表达式abcde/fghij=n的abcde和fghij,其中a~j恰好为数字0~9的一个排列. 如果没有符合题意的数,输出0.本题所说的五位数可以包括前导0的,如01234在这里也称为五位数. 输入 一个正整数n  输出 若干行,每行包括两个符合要求的五位正整数(每行的两个数先大后小),两数之

[HDU 5135] Little Zu Chongzhi&#39;s Triangles (dfs暴搜)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5135 题目大意:给你n条边,选出若干条边,组成若干个三角形,使得面积和最大.输出最大的面积和. 先将边从小到大排序,这样前面的两条边加起来如果不大于第三条边就可以跳出,这是一个存在性条件. dfs(int idx,int now,int cnt,int nowmax)代表我当前处理的是第idx条边,已经加入边集的有cnt条边,当前的边的长度和为now,组成的最大面积和为nowmax. 暴力枚举每个三

HDU 5012 bfs暴搜

Dice Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 243    Accepted Submission(s): 135 Problem Description There are 2 special dices on the table. On each face of the dice, a distinct number wa

HDU 4284 Travel Folyd预处理+dfs暴搜

题意:给你一些N个点,M条边,走每条边要花费金钱,然后给出其中必须访问的点,在这些点可以打工,但是需要先拿到证书,只可以打一次,也可以选择不打工之直接经过它.一个人从1号点出发,给出初始金钱,问你能不能访问所以的点,并且获得所以证书. 题解:目标是那些一定要访问的点,怎么到达的我们不关心,但是我们关系花费最少的路径,而且到达那个点后是一定要打工的,如果只是经过,那么在求花费最少的路径的时候已经考虑过了. 因此先用Folyd求出各个点直接的最短路径,由于N很小,又只要求出一个解,所以直接dfs暴搜

bzoj 2241: [SDOI2011]打地鼠(暴搜+减枝)

2241: [SDOI2011]打地鼠 Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 1098  Solved: 691 [Submit][Status][Discuss] Description 打地鼠是这样的一个游戏:地面上有一些地鼠洞,地鼠们会不时从洞里探出头来很短时间后又缩回洞中.玩家的目标是在地鼠伸出头时,用锤子砸其头部,砸到的地鼠越多分数也就越高. 游戏中的锤子每次只能打一只地鼠,如果多只地鼠同时探出头,玩家只能通过多次挥舞锤子的方

Sicily1317-Sudoku-位运算暴搜

最终代码地址:https://github.com/laiy/Datastructure-Algorithm/blob/master/sicily/1317.c 这题博主刷了1天,不是为了做出来,AC之后在那死磕性能... 累积交了45份代码,纪念一下- - 以上展示了从1.25s优化到0.03s的艰苦历程... 来看题目吧,就是一个数独求解的题: 1317. Sudoku Constraints Time Limit: 10 secs, Memory Limit: 32 MB Descript

2014牡丹江网络预选赛F题(隐式图BFS暴搜)zoj3814

Sawtooth Puzzle Time Limit: 10 Seconds      Memory Limit: 65536 KB Recently, you found an interesting game called Sawtooth Puzzle. This is a single-player game played on a grid with 3 x 3 cells. Each cell contains a part of an image. Besides, each ed