2 条题解

  • 0
    @ 2025-4-19 18:29:48

    #include #include #define Abs(x) (x) < 0 ? -(x) : (x)

    using namespace std;

    int n; double a[12][11], fc[12][12];

    void gaosi() {//高斯消元 for (int i = 1; i <= n; i++) { int maxx = i; for (int j = i + 1; j <= n; j++) if (Abs(fc[j][i]) > Abs(fc[maxx][i])) maxx = j; for (int j = 1; j <= n + 1; j++) swap(fc[i][j], fc[maxx][j]); for (int j = 1; j <= n; j++) if (i != j) for (int k = i + 1; k <= n + 1; k++) fc[j][k] = fc[j][k] - (fc[i][k] * (fc[j][i] / fc[i][i])); } }

    int main() { scanf("%d", &n);//读入 for (int i = 1; i <= n + 1; i++) for (int j = 1; j <= n; j++) scanf("%lf", &a[i][j]);//读入

    for (int i = 1; i <= n; i++)
    	for (int j = 1; j <= n; j++) {//求出方程式
    		fc[i][j] = 2 * (a[i][j] - a[i + 1][j]);
    		fc[i][n + 1] += a[i][j] * a[i][j] - a[i + 1][j] * a[i + 1][j];
    	}
    
    gaosi();//高斯消元
    
    for (int i = 1; i <= n; i++)
    	printf("%.3lf ", fc[i][n + 1] / fc[i][i]);//输出
    
    return 0;
    

    }

    • 0
      @ 2024-3-30 20:39:32
      #include<cstdio>
      #include<algorithm>
      #define Abs(x) (x) < 0 ? -(x) : (x)
      
      using namespace std;
      
      int n;
      double a[12][11], fc[12][12];
      
      void gaosi() {//高斯消元
      	for (int i = 1; i <= n; i++) {
      		int maxx = i;
      		for (int j = i + 1; j <= n; j++)
      			if (Abs(fc[j][i]) > Abs(fc[maxx][i]))
      				maxx = j;
      		for (int j = 1; j <= n + 1; j++)
      			swap(fc[i][j], fc[maxx][j]);
      		for (int j = 1; j <= n; j++)
      			if (i != j)
      				for (int k = i + 1; k <= n + 1; k++)
      					fc[j][k] = fc[j][k] - (fc[i][k] * (fc[j][i] / fc[i][i]));
      	}
      }
      
      int main() {
      	scanf("%d", &n);//读入
      	for (int i = 1; i <= n + 1; i++)
      		for (int j = 1; j <= n; j++)
      			scanf("%lf", &a[i][j]);//读入
      	
      	for (int i = 1; i <= n; i++)
      		for (int j = 1; j <= n; j++) {//求出方程式
      			fc[i][j] = 2 * (a[i][j] - a[i + 1][j]);
      			fc[i][n + 1] += a[i][j] * a[i][j] - a[i + 1][j] * a[i + 1][j];
      		}
      	
      	gaosi();//高斯消元
      	
      	for (int i = 1; i <= n; i++)
      		printf("%.3lf ", fc[i][n + 1] / fc[i][i]);//输出
      	
      	return 0;
      }
      
      
      • @ 2024-3-30 20:42:09

        这道题用高斯消元来做。

    • 1

    信息

    ID
    118
    时间
    1000ms
    内存
    128MiB
    难度
    6
    标签
    递交数
    17
    已通过
    11
    上传者