洛谷 P3389 【模板】高斯消元法

来源:互联网 发布:大数据算法导论 视频 编辑:程序博客网 时间:2024/06/07 00:42

第一个点过不去,貌似是因为判断是否多解和无解的地方出了问题??稍作修改即可。。我懒得改了

//Decision's template#include<cstdio>#include<cstring>#include<iostream>#include<cstdlib>#include<vector>#include<queue>#include<stack>#include<algorithm>#include<string>#include<cmath>#include<map>#include<set>using namespace std;#define DP_maxn 16#define maxn 100000#define INF 10000007#define mod 1000000007#define mst(s,k) memset(s,k,sizeof(s))typedef long long ll;struct Edge{    int from,to,dist;    Edge(int u,int v,int d):from(u),to(v),dist(d){}};/*-------------------------------template End--------------------------------*/double a[200][200],eps = 1e-6;;int n;void init(){cin>>n;for(int i = 1;i<=n;i++){for(int j = 1;j<=n;j++){cin>>a[i][j];}cin>>a[i][n+1];}}bool gauss(){int now = 1,to;double t;for(int i = 1;i<=n;i++){for(to = now;to<=n;to++) if(fabs(a[to][i])>eps) break;if(to>n) continue;if(to!=now) for(int j = 1;j<=n+1;j++)    swap(a[now][j],a[to][j]);t = a[now][i];for(int j = 1;j<=n+1;j++) a[now][j] /= t;for(int j = 1;j<=n;j++){if(j!=now){t = a[j][i];for(int k = 1;k<=n+1;k++) a[j][k]-=t*a[now][k];}now++;}}for(int i=now;i<=n;i++)    if(fabs(a[i][n+1])>eps)return 0;    return 1;}int main(){    //freopen("std.in","r",stdin);    //freopen("std.out","w",stdout);    init();    if(!guess()) cout<<"No Solution"<<endl;    else {for(int i = 1;i<=n;i++) printf("%.2f\n",a[i][n+1]);}}


原创粉丝点击