高斯消元(模板)
2017-11-12 16:07
351 查看
#include<iostream> #include<string.h> #include<algorithm> #include<stdio.h> using namespace std; int x[1000]; int zdgys(int a,int b)//求最大公约数 { int c=1; if(a*b<0) c=-1; if(a<0) a=-a; if(b<0) b=-b; if(a==0) return b; if(b==0) return a; while(a&&b) { if(a>=b) a=a%b; else b=b%a; if(a==0) c=c*b; if(b==0) c=c*a; } return c; } int gauss(int a[][100],int r,int c) { int i,j,k,ta,tb,t,sum; for(i=0;i<r&&i<c;i++) { if(a[i][i]==0) { for(k=i+1;k<r;k++) { if(a[k][i]!=0) { for(j=i;j<c+1;j++) { a[i][j]=a[k][j]+a[i][j]; } break; } } } for(k=0;k<r;k++) { if(k==i||a[i][i]==0) continue; // cout<<a[k][i]<<" "<<a[i][i]<<endl; t=zdgys(a[k][i],a[i][i]); ta=a[k][i]/t; tb=a[i][i]/t; //cout<<ta<<"tttt ttt"<<tb<<endl; for(j=0;j<c+1;j++) { a[k][j]=a[k][j]*tb-a[i][j]*ta; } } //ssssssssssssssss /* for(k=0;k<r;k++) { for(j=0;j<c+1;j++) { cout<<a[k][j]<<" "; } cout<<endl; } */ //sssssssssssssssssssss } for(i=0;i<r;i++) { sum=0; if(a[i][i]==0&&a[i][c]!=0) { cout<<"无解"<<endl; return 0; } if(a[i][i]!=0) { sum++; x[i]=a[i][c]/a[i][i]; } else x[i]=0; } if(sum<c) { cout<<"无穷多解"<<endl; return 0; } return 1; } int main() { int a[100][100],n,m,i,j; while(cin>>n>>m) { memset(x,0,sizeof(x)); for(i=0;i<n;i++) { for(j=0;j<=m;j++) { cin>>a[i][j]; } } int ans=gauss(a,n,m);//cout<<"ssssss"<<endl; if(ans) { for(i=0;i<n;i++) { cout<<x[i]; if(i!=n-1) cout<<" "; else cout<<endl; } } } return 0; }
相关文章推荐
- 高斯消元模板
- 高斯消元模板
- 高斯消元模板
- 高斯消元模板
- hdu 3976 Electric resistance 高斯消元(浮点满秩模板)
- 【高斯消元】整数高斯消元模板
- 高斯消元 [模板]
- HDU 3359 高斯消元模板题,
- 高斯消元模板
- 【高斯消元模板】【bzoj 1013】: [JSOI2008]球形空间产生器sphere
- 邝斌的ACM模板(高斯消元(浮点数))
- 高斯消元——浮点数模板
- Regionals 2015 :: Asia - Taipei B Linear Ecosystem 高斯消元(真模板)
- 高斯消元模板
- 高斯消元模板
- 高斯消元模板
- 高斯列主消元详解及模板
- 高斯消元模板
- 高斯消元 模板
- 高斯消元&线性基模板