首页 > 代码库 > 非齐次方程组代码(C++)

非齐次方程组代码(C++)

/*
先输入未知数个数。
然后输入n*(n+1)的行列式。
*/
#include <stdio.h>
#include <stdlib.h>
int hanglieshi(int a[],int n)
{
    int j,s;
    if(n==1)  s=a[0];
    else
    {
        for(s=0,j=0; j<n; j++)
        {
            int yuzishi(int x,int b[],int y);
            if((j%2)==0)
            {
                s=s+a[j]*yuzishi(j,a,n);
            }
            else
            {
                s=s-a[j]*yuzishi(j,a,n);
            }
        }
    }
    return s;
}
int yuzishi(int x,int b[],int y)
{
    int m,l,k=(y-1)*(y-1),q,c[k];
    for(m=y,l=0; m<y*y; m++,l++)
    {
        if(m%y==x)   m++;
        c[l]=b[m];
    }
    q=hanglieshi(c,y-1);
    return q;
}
int main()
{
    int n,h;
    while(~scanf("%d",&n))
    {
        int x[n*n+n];
        for(h=0; h<n*n+n; h++)
        {
            scanf("%d",&x[h]);
        }
        int tmp[n*n],cur=0;
        do
        {
            for(int i=0;i<n;i++)
                for(int j=0;j<n;j++)
                    if(cur!=j)tmp[i*n+j]=x[i*(n+1)+j];
                    else tmp[i*n+j]=x[i*(n+1)+n];
            puts("");
            for(int i=0;i<n;i++)
                for(int j=0;j<n;j++)
                    printf("%d%c",tmp[i*n+j],j==n-1&&i!=n-1?'\n':' ');
            if(cur==n)printf(" ------D=%d\n",hanglieshi(tmp,n));
            else printf(" ------D%d=%d\n",cur+1,hanglieshi(tmp,n));
        }while(++cur<=n);
        printf("------over-------");
    }
    return 0;
}
/*
4
1 1 1 1 5
1 2 -1 4 -2
2 -3 -1 -5 -2
3 1 2 11 0
*/

非齐次方程组代码(C++)