| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:少量测试数据+高斯消元代码In Reply To:少量测试数据+高斯消元代码 Posted by:15211160230 at 2017-03-31 17:00:08 > 搞了一下午QAQ。
> #include <cstdio>
> #include <memory.h>
> #include <cstring>
> #include <algorithm>
> #define maxn 11
> using namespace std;
> int Map[maxn][maxn],N=9;
> char *line[]={"ABDE","ABC","BCEF","ADG","BDEFH","CFI","DEGH","GHI","EFHI"};
> void Init()
> { int i,j;
> memset(Map,0,sizeof(Map));
> for(j=0;j<N;++j)
> for(i=0;i<strlen(line[j]);++i)
> Map[line[j][i]-'A'][j]=1;
> }
> int Free[maxn],ans[maxn];
> void GaussSolve()
> { int i,j,k,res=0,r=0;
> int x,y;
> memset(Free,0,sizeof(Free));
> for(i=0;i<N;++i)
> { if(Map[r][i]==0)
> { for(j=r+1;j<N;++j)
> if(Map[j][i]>0)
> { for(k=i;k<=N;++k)
> swap(Map[r][k],Map[j][k]);
> break;
> }
> }
> if(Map[r][i]==0)
> { res++;
> continue;
> }
> for(j=r+1;j<N;++j)
> { if(Map[j][i]>0)
> { x=Map[r][i];
> y=Map[j][i];
> for(k=i;k<=N;++k)
> { Map[j][k]=Map[j][k]*x-y*Map[r][k];
> Map[j][k]=(Map[j][k]%4+4)%4;
> }
> }
> }
> Free[i]=1,r++;
> }
> int temp;
> for(i=N-1;i>=0;--i)
> { temp=Map[i][N];
> for(j=i+1;j<N;j++)
> temp-=Map[i][j]*ans[j];
> temp=(temp%4+4)%4;
> for(ans[i]=0;ans[i]<=3;++ans[i])
> if((ans[i]*Map[i][i]%4+4)%4==temp)
> break;
> ans[i]%=4;
> }
> bool flag=0;
> for(i=0;i<N;++i)
> for(j=0;j<ans[i];++j)
> printf(flag==0?"%d":" %d",i+1),flag=1;
> puts("");
> }
> int main()
> { int i,w;
> Init();
> for(i=0;i<N;++i)
> scanf("%d",&w),Map[i][N]=(4-w)%4;
> GaussSolve();
> return 0;
> }
> /*
> 2 1 3
> 0 1 2
> 3 1 0
> 1 2 2 2 4 4 5 5 5 6 6 7 7 8 9
>
> 3 3 0
> 2 2 2
> 2 1 2
> 4 5 8 9
>
> 0 0 0
> 0 0 0
> 0 0 2
> 3 3 5 5 6 6 7 7 8 8 9 9
> */
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator