• 矩阵幂


    不是快速幂,只是想写离散作业,随便写的一个幂

    #include<iostream>
    using namespace std;
    int main()
    {
        int a[100][100];
        int b[100][100];
        int ans[100][100];
        int n,m;
        cin>>n>>m;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                cin>>a[i][j];
                b[i][j]=a[i][j];
            }
        }
        m--;
        while(m--){
            for(int i=1;i<=n;i++){
                for(int j=1;j<=n;j++){
                    ans[i][j]=0;
                    for(int k=1;k<=n;k++){
                        ans[i][j]+=a[i][k]*b[k][j];
                    }
                }
            }
            for(int i=1;i<=n;i++){
                for(int j=1;j<=n;j++){
                    b[i][j]=ans[i][j];
                }
            }
        }
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                cout<<ans[i][j]<<" ";
            }
            cout<<endl;
        }
    }
    

      

    最近我又看到了另一种代码,非常简短

    #include<cstdio>
    const int maxn = 257;
    int n,m;
    int a[maxn][maxn],aa[maxn][maxn];
    int main()
    {
        printf("输入点边数n、m
    ");
        scanf("%d%d",&n,&m);
        printf("输入边的两点
    ");
        for(int i=0;i<m;i++)
        {
            int x,y;
            scanf("%d%d",&x,&y);
            if(x!=y)a[x][y]=a[y][x]=aa[x][y]=aa[y][x]=1;
            else a[x][y]=aa[x][y]=2;
        }
        printf("输入所求次幂
    ");
        int t;
        scanf("%d",&t);
        while(--t)
        {
            for(int i=0;i<n;i++)
            {
                for(int j=0;j<n;j++)
                {
                    int c=0;
                    for(int k=0;k<n;k++)
                    {
                        c+=a[i][k]*aa[k][j];
                        //printf("%d %d %d
    ",i,j,c);
                    }
                    a[i][j]=c;
                }
            }
        }
        for(int i=0;i<n;i++)
            for(int j=0;j<n;j++)
            printf("%d%c",a[i][j],j+1!=n?' ':'
    ');
        return 0;
    }
    

      可惜这个代码存在错误。

      错误的原因在于,在计算的过程中,对作为被乘数的矩阵进行了更新,导致计算过程结果偏大

  • 相关阅读:
    HTML2
    HTML1
    MySQL进阶part4
    pymysql模块
    MySQL进阶part3
    MySQL进阶part2
    MySQL进阶part1
    java IO中的乱码问题
    解决在IDEA中无法使用Scanner输入的问题
    IDEA配置xml文件头报错:URI is not registered (Settings | Languages & Frameworks | Schemas and DTDs)
  • 原文地址:https://www.cnblogs.com/ZGQblogs/p/9114750.html
Copyright © 2020-2023  润新知