Why Runtime Error?
查看原帖
Why Runtime Error?
399250
AffineRing楼主2021/10/30 15:13

不知道哪里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;
}
2021/10/30 15:13
加载中...