{模板}高(搞)斯(死)消元

    xiaoxiao2026-04-17  1

    解n元1次方程组

    #include<cstdio> #include<cstring> #define max1 100 #define fo(i,x,y) for(int i=x;i<=y;i++) using namespace std; int n; double f[max1+1][max1+1],ans[max1+1]; void solve_equations(); int main() { scanf("%d",&n); fo(i,0,n-1) { fo(j,1,n) scanf("%lf",&f[i][j]); scanf("%lf",&f[i][0]); } solve_equations(); fo(i,1,n) printf("%.3lf ",ans[i]); } void solve_equations() { double d,a[n][n+1]; fo(i,0,n-1) fo(j,0,n) a[i][j]=f[i][j]; int a0,bz[n]; memset(bz,0,sizeof(bz)); fo(i,1,n) { for(a0=0;a[a0][i]==0||bz[a0];a0++); bz[a0]=1; fo(j,0,n-1) if (j!=a0) { if (a[j][i]==0) continue; d=a[a0][i]/a[j][i]; fo(k,0,n) a[j][k]=a[j][k]*d-a[a0][k]; } } fo(i,0,n-1) fo(j,1,n) { if (a[i][j]!=0) { ans[j]=-a[i][0]/a[i][j]; break; } } }
    转载请注明原文地址: https://ju.6miu.com/read-1308928.html
    最新回复(0)