AffineRing @ 2021-10-30 15:13:01
不知道哪里RE了,但是除了#4,#8,#9,#10之外所有点都RE。
哪里出问题了?
#include<bits/stdc++.h>
using namespace std;
#define ll long long
inline int read(){
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+ch-'0',ch=getchar();
return x*f;
}
const int N=110;
double c[N][N],b[N];int n;
int main(){
n=read();
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)scanf("%lf",&c[i][j]);
scanf("%lf",&b[i]);
}
for(int i=1;i<=n;i++){
for(int j=i;j<=n;j++)
if(fabs(c[j][i])>1e-8){
for(int k=1;k<=n;k++)swap(c[i][k],c[j][k]);
swap(b[i],b[j]);
}
if(fabs(c[i][i])<1e-8)continue;
for(int j=1;j<=n;j++){
if(i==j)continue;
double rate=c[j][i]/c[i][i];
for(int k=i;k<=n;k++)c[j][k]-=c[i][k]*rate;
b[j]-=b[i]*rate;
}
}
for(int i=1;i<=n;i++){
bool check=0;
for(int j=1;j<=n;j++)
if(fabs(c[i][j])>1e-8){check=1;break;}
if(!check&&fabs(b[i])>1e-8){printf("%d\n",-1);return 0;}
if(!check&&fabs(b[i])<1e-8){printf("%d\n",0);return 0;}
}
for(int i=1;i<=n;i++)
printf("x%d=%.2lf\n",i,b[i]/c[i][i]);
return 9;
}
by AffineRing @ 2021-10-30 15:16:44
艹,知道了,return 9
了,艹
然后,判-1应该全部判掉再判0
by Rainy7 @ 2021-10-30 15:25:50
return 9;
蚌埠住了