zoukankan      html  css  js  c++  java
  • POJ

    中文描述:

    Description
    给你一个5*6的矩阵,矩阵里每一个单元都有一个灯和一个开关,如果按下此开关,那么开关所在位置的
    那个灯和开关前后左右的灯的状态都会改变 (即由亮到不亮或由不亮到亮)。给你一个初始的灯的状态,
    问怎样控制每一个开关使得所有的灯最后全部熄灭。
    Input
    输入第一行整数N,代表有N组测试用例,每一组测试用例是一个5*6的矩阵,在5*6的矩阵里,0代表灯
    关闭,1代表灯开着。
    Output
    对于每一组数据,输出第一行包括字符串:"PUZZLE #m",m是代表的是第m组数据,接着输出一个包含
    0,1的5*6的矩阵,(ij)处的0代表(i,j)处的开关没有按下,(ij)处的1代表(i,j)处的开关
    按下。
    Sample Input
    2
    0 1 1 0 1 0
    1 0 0 1 1 1
    0 0 1 0 0 1
    1 0 0 1 0 1
    0 1 1 1 0 0
    0 0 1 0 1 0
    1 0 1 0 1 1
    0 0 1 0 1 1
    1 0 1 1 0 0
    0 1 0 1 0 0
    Sample Output
    PUZZLE #1
    1 0 1 0 0 1
    1 1 0 1 0 1
    0 0 1 0 1 1
    1 0 0 1 0 0
    0 1 0 0 0 0
    PUZZLE #2
    1 0 0 1 1 1
    1 1 0 0 0 0
    0 0 0 1 0 0
    1 1 0 1 0 1
    1 0 1 1 0 1
    HINT
    找出每个灯和开关之间的关系,列出方程组求解。

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        int t, kase=0;
        int a[31][31];
        scanf("%d", &t);
        while(t--)
        {
            memset(a,0,sizeof(a));
            for(int i = 0; i < 30; i++)
                scanf("%d", &a[i][30]);
            for(int i = 0; i < 30; i++)
            {
                a[i][i] = 1;
                if(i % 6 != 0) a[i-1][i] = 1;
                if(i %6 != 5) a[i+1][i] = 1;
                if(i > 5) a[i-6][i] = 1;
                if(i < 24) a[i+6][i] = 1;
            }
            for(int i = 0; i < 30; i++)
            {
                int k = i;
                for(; k < 30; k++)
                    if(a[k][i]!=0)
                        break;
                for(int j = 0; j <= 30; j++)
                    swap(a[i][j], a[k][j]);
                for(int j = 0; j < 30; j++)
                    if(i!=j && a[j][i])
                        for(int k = 0; k <= 30; k++)
                            a[j][k] ^= a[i][k];
            }
            printf("PUZZLE #%d
    ", ++kase);
            for(int i = 0; i < 30; i++)
            {
                printf("%d", a[i][30]);
                if(i % 6 == 5) printf("
    ");
                else printf(" ");
            }
        }
        return 0;
    }
    


  • 相关阅读:
    事务
    handler
    codeforces 27E Number With The Given Amount Of Divisors
    暑期实践日志(五)
    暑期实践日志(四)
    暑期实践日志(三)
    暑期实践日志(二)
    暑期实践日志(一)
    数论 UVALive 2756
    数论 UVALive 2911
  • 原文地址:https://www.cnblogs.com/kunsoft/p/5312753.html
Copyright © 2011-2022 走看看