| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 6492 | Accepted: 4267 | 
Description


Input
Output
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
Source
//140K	0MS
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
#include<math.h>
#include<map>
#include<stack>
#include<queue>
#include<vector>
#pragma comment(linker, "/STACK:1024000000");
#define M 100007
#define inf 0x3f3f3f3f
#define ll long long
#define mod 1000000009
#define eps (1e-8)
using namespace std;
int matrix[37][37],id[37];
int dir[4][2]={{0,1},{1,0},{-1,0},{0,-1}};
void Guess(int n,int m)
{
    int i=0,j=0;
    while(i<n&&j<m)
    {
        int max_i=i;
        for(int k=i+1;k<n;k++)
            if(matrix[k][j]==1)
            {
                max_i=k;
                break;
            }
        if(matrix[max_i][j])
        {
            if(max_i!=i)
                for(int k=0;k<m;k++)
                    swap(matrix[max_i][k],matrix[i][k]);
            for(int u=0;u<n;u++)
                if(i!=u&&matrix[u][j])
                    for(int k=j;k<m;k++)
                        matrix[u][k]=matrix[u][k]^matrix[i][k];
            i++;
        }
        j++;
    }
}
int main()
{
    int n,cas=1;
    scanf("%d",&n);
    while(n--)
    {
        memset(matrix,0,sizeof(matrix));
        memset(id,0,sizeof(id));
        for(int i=0;i<5;i++)
            for(int j=0;j<6;j++)
            {
                scanf("%d",&id[i*6+j]);
                matrix[i*6+j][30]=id[i*6+j];
            }
        for(int i=0;i<5;i++)
            for(int j=0;j<6;j++)
            {
                matrix[i*6+j][i*6+j]=1;
                for(int k=0;k<4;k++)
                {
                    int x=i+dir[k][0];
                    int y=j+dir[k][1];
                    if(x>=0&&x<5&&y>=0&&y<6)
                        matrix[i*6+j][x*6+y]=1;
                }
            }
        Guess(30,31);
        printf("PUZZLE #%d\n",cas++);
        for(int i=0;i<5;i++)
        {
            for(int j=0;j<6;j++)
                printf("%d ",matrix[i*6+j][30]);
            printf("\n");
        }
    }
}
POJ 1222 EXTENDED LIGHTS OUT 高斯消元,布布扣,bubuko.com
POJ 1222 EXTENDED LIGHTS OUT 高斯消元
原文:http://blog.csdn.net/crescent__moon/article/details/38087285