1 #include<cstdio>
 2 #include<iostream>
 3 using namespace std;
 4 int n,m,a[2009][2009],st=1;
 5 char ch[6009];
 6 bool gao(int a1)
 7 {
 8     for(int i=st;i<=a1;i++)
 9       {
10         int k;
11         for(k=i;k<=a1;k++)
12           if(a[k][i])
13             break;
14         if(k==a1+1)
15           {
16             st=i;
17             return 0;
18           }
19         for(int j=1;j<=n+1;j++)
20           swap(a[i][j],a[k][j]);
21         k=a[i][i];
22         for(int j=1;j<=m;j++)
23           if(i!=j&&a[j][i])
24             {
25               k=a[j][i];
26               for(int l=1;l<=n+1;l++)
27               a[j][l]=(a[j][l]-a[i][l]*k+2)%2;
28             }
29         if(i==n)
30           return 1;
31       }
32 }
33 int main()
34 {
35     scanf("%d%d",&n,&m);
36     for(int i=1;i<=m;i++)
37       {
38         scanf("%s",ch+1);
39         for(int j=1;j<=n;j++)
40            a[i][j]=ch[j]-'0';
41         scanf("%d",&a[i][n+1]);
42       }
43     for(int i=n;i<=m;i++)
44       if(gao(i))
45         {
46             printf("%d\n",i);
47             for(int i=1;i<=n;i++)
48               if(a[i][n+1]%2)
49                 printf("?y7M#\n");
50               else
51                 printf("Earth\n");
52             return 0;
53         }
54     printf("Cannot Determine\n");
55     return 0;
56 }

据题目可知就是解方程,所以高斯消元法

posted on 2016-03-18 05:49  xiyuedong  阅读(139)  评论(0编辑  收藏  举报