高斯消元练习

网友投稿 254 2022-08-31

高斯消元练习

POJ 1222 EXTENDED LIGHTS OUT

​​等式解释:如果灯是关着的,那么

必须等于0,维持状态;如果灯是开着的,

必须等于1,改变状态。

5点领域”换个角度看,只有周围的5盏灯会对其产生影响,所以他们的当前系数是1。有:

假设有规模为3*3的9盏灯:

0 1 0

1 0 0

1 1 1

增广矩阵对应的是:

1 1 0 1 0 0 0 0 0 0

1 1 1 0 1 0 0 0 0 1

0 1 1 0 0 1 0 0 0 0

1 0 0 1 1 0 1 0 0 1

0 1 0 1 1 1 0 1 0 0

0 0 1 0 1 1 0 0 1 0

0 0 0 1 0 0 1 1 0 1

0 0 0 0 1 0 1 1 1 1

0 0 0 0 0 1 0 1 1 1

#include #include #include #include using namespace std;const int N=905;int gcd(int a,int b){ return b==0?a:gcd(b,a%b);}// a[][]:增广矩阵 n: 方程数 m:变量数void Gauss(int a[N][N],int n,int m,int &r,int &c){ for(r=0,c=0;rabs(a[maxi][c])) maxi=i; } if(maxi!=r){ for(int j=r;j=0;i--){ int t=a[i][c]; for(int j=i+1;j0) a[6*i+j][6*(i-1)+j]=1; if(i<4) a[6*i+j][6*(i+1)+j]=1; if(j>0) a[6*i+j][6*i+j-1]=1; if(j<5) a[6*i+j][6*i+j+1]=1; } } for(int i=0;i<5;i++){ for(int j=0;j<6;j++) scanf("%d",&a[6*i+j][30]); } int r,c; Gauss(a,30,30,r,c); reback(a,30,30,r,c,x); printf("PUZZLE #%d\n",ca++); for(int i=0;i<30;i++){ if((i+1)%6==0) printf("%d\n",x[i]); else printf("%d ",x[i]); } } return 0;}

POJ 1830 开关问题

​​#include #include using namespace std;const int N=30;int gcd(int a,int b){ return b==0?a:gcd(b,a%b);}void Gauss(int a[N][N],int n,int m,int &r,int &c){ for(r=0,c=0;ra[maxi][c]) maxi=i; } if(maxi!=r){ for(int j=r;j=0;i--){ int dex=0; int cnt=0; for(int j=0;j1) continue; int t=a[i][m]; for(int j=0;j=0;i--){ int t=a[i][c]; for(int j=i+1;j>k; while(k--){ memset(a,0,sizeof(a)); int N; scanf("%d",&N); for(int i=0;i

POJ 2947 Widget Factory

​​有

例如例一:

#include #include #include #include #include using namespace std;const int N=305;int gcd(int a,int b){ return b==0?a:gcd(b,a%b);}void Gauss(int a[N][N],int n,int m,int &r,int &c){ for(r=0,c=0;r a[maxi][c]) maxi = i; if(maxi != r) { for(int i=r; i=0;i--){ int t=a[i][c]; for(int j=i+1;j mp;int main(){ //freopen("cin.txt","r",stdin); mp["SUN"]=0; mp["MON"]=1; mp["TUE"]=2; mp["WED"]=3; mp["THU"]=4; mp["FRI"]=5; mp["SAT"]=6; int n,m; while(cin>>n>>m){ if(n+m==0) break; memset(a,0,sizeof(a)); int k,dex; char s1[10],s2[10]; for(int i=0;i0) printf("Multiple solutions.\n"); else if(g<0) printf("Inconsistent data.\n"); else { for(int i=0;i

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:三角剖分·圆和多边形的交
下一篇:年度耗时最长女单决赛,巴多萨首夺1000赛冠军!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~