70 条题解

  • 0
    @ 2006-11-21 22:03:57

    精度,精度。。。输出的时候要处理。。。

  • 0
    @ 2006-11-21 12:24:17

    什么是高斯消元法?哪位大牛能指导一下,感激不尽!

  • 0
    @ 2006-11-06 16:57:10

    晕...终于过了...

    就是个找每列最大值里..可能是负数...不是0///无奈了.

  • 0
    @ 2006-11-15 19:57:04

    每次把首项绝对值最大的行与当前行交换

  • 0
    @ 2006-07-19 11:20:02

    就是一个简单的高斯消元解线性方程的问题吗

  • 0
    @ 2006-03-17 22:56:57

    要注意系数为0的情况

  • 0
    @ 2006-01-26 09:56:21

    标准高斯消元

    特殊情况都免了

  • -1
    @ 2016-12-06 20:28:54

    AC代码 C语言

    #include<stdio.h>
    int n;
    double f[102][102];
    double num[102];
    void swap(int a,int b)
    {
    for(int i=1;i<=n+1;i++)
    {
    double t=f[a][i];
    f[a][i]=f[b][i];
    f[b][i]=t;
    }
    }
    double fabs(double a)
    {
    return a>0?a:(-a);
    }
    int main()
    {
    scanf("%d",&n);
    int i,j,k;
    for(i=1;i<=n;i++)
    {
    for(j=1;j<=n+1;j++)
    {
    int temp;
    scanf("%d",&temp);
    f[i][j]=(double)temp;
    }
    }
    for(i=1;i<=n;i++)
    {
    int pos;
    double max=0.0;
    for(j=i;j<=n;j++)
    {
    if(max<fabs(f[j][i]))
    {
    max=fabs(f[j][i]);
    pos=j;
    }
    }
    if(max-0.0<1e-5) continue;
    swap(pos,i);
    for(j=i+1;j<=n;j++)
    {
    if(fabs(f[j][i]-0.0)<1e-5) continue;
    double t=fabs(f[i][i]/f[j][i]);
    if(f[i][i]*f[j][i]>0)
    {
    for(k=i;k<=n+1;k++)
    {
    f[j][k]=f[j][k]*t-f[i][k];
    }
    }
    else
    {
    for(k=i;k<=n+1;k++)
    {
    f[j][k]=f[j][k]*t+f[i][k];
    }
    }
    }
    }
    for(i=n;i>=1;i--)
    {
    double sum=f[i][n+1];
    for(j=n;j>i;j--)
    {
    sum-=f[i][j]*num[j];
    }
    num[i]=sum/f[i][i];
    }
    for(i=1;i<=n;i++)
    {
    printf("%d ",(int)(num[i]+0.5));
    }
    return 0;
    }

  • -1
    @ 2016-12-06 20:26:52

    AC代码 C
    #include<stdio.h>
    int n;
    double f[102][102];
    double num[102];
    void swap(int a,int b)
    {
    for(int i=1;i<=n+1;i++)
    {
    double t=f[a][i];
    f[a][i]=f[b][i];
    f[b][i]=t;
    }
    }
    double fabs(double a)
    {
    return a>0?a:(-a);
    }
    int main()
    {
    scanf("%d",&n);
    int i,j,k;
    for(i=1;i<=n;i++)
    {
    for(j=1;j<=n+1;j++)
    {
    int temp;
    scanf("%d",&temp);
    f[i][j]=(double)temp;
    }
    }
    for(i=1;i<=n;i++)
    {
    int pos;
    double max=0.0;
    for(j=i;j<=n;j++)
    {
    if(max<fabs(f[j][i]))
    {
    max=fabs(f[j][i]);
    pos=j;
    }
    }
    if(max-0.0<1e-5) continue;
    swap(pos,i);
    for(j=i+1;j<=n;j++)
    {
    if(fabs(f[j][i]-0.0)<1e-5) continue;
    double t=fabs(f[i][i]/f[j][i]);
    if(f[i][i]*f[j][i]>0)
    {
    for(k=i;k<=n+1;k++)
    {
    f[j][k]=f[j][k]*t-f[i][k];
    }
    }
    else
    {
    for(k=i;k<=n+1;k++)
    {
    f[j][k]=f[j][k]*t+f[i][k];
    }
    }
    }
    }
    for(i=n;i>=1;i--)
    {
    double sum=f[i][n+1];
    for(j=n;j>i;j--)
    {
    sum-=f[i][j]*num[j];
    }
    num[i]=sum/f[i][i];
    }
    for(i=1;i<=n;i++)
    {
    printf("%d ",(int)(num[i]+0.5));
    }
    return 0;
    }
    /*

    2
    1 1 3
    1 -1 1

    */

  • -1
    @ 2015-10-29 18:50:07

    高斯消元 每次消要记得把绝对值最大的调上来,否则可能出现被0除的情况

    #include <cstdio>
    #include <algorithm>
    #include <cmath>
    using namespace std;
    double equ[110][110],ans[110];
    int n;
    void work(){
    for(int i=1;i<n;i++){//消掉第i个未知数
    int maxi=i;
    for(int t=i;t<=n;t++) if(fabs(equ[t][i]) > fabs(equ[maxi][i])) maxi=t;
    for(int t=1;t<=n+1;t++) swap(equ[maxi][t],equ[i][t]);
    for(int j=i+1;j<=n;j++){//消第j个方程
    double t=equ[j][i]/equ[i][i];
    for(int k=i;k<=n+1;k++){
    equ[j][k]-=t*equ[i][k];
    }
    }
    }
    for(int i=n;i>=1;i--){//回代第i个
    for(int j=n;j>i;j--){
    equ[i][n+1]-=equ[i][j]*ans[j];
    }
    ans[i]=equ[i][n+1]/equ[i][i];
    }
    }

    int main(){
    //freopen("1052.in","r",stdin);freopen("1052.out","w",stdout);
    scanf("%d",&n);
    for(int j=1;j<=n;j++)
    for(int i=1;i<=n+1;i++)
    scanf("%lf",&equ[j][i]);
    work();
    for(int i=1;i<=n;i++) printf("%d ",int(ans[i]+0.5));
    return 0;
    }

    • @ 2016-03-26 21:46:05

      你这个不是wa了么?

信息

ID
1052
难度
7
分类
线性代数 | 高斯消元 点击显示
标签
(无)
递交数
2398
已通过
549
通过率
23%
被复制
9
上传者