题解 | #矩阵幂#

矩阵幂

https://www.nowcoder.com/practice/31e539ab08f949a8bece2a7503e9319a

#include <iostream>
using namespace std;
struct matrix {
    int data[10][10];
    int row;
    int col;
    matrix(int r) {
        row = col = r;
    }
    matrix operator* (matrix B);
};
matrix matrix::operator* (matrix B) {
    matrix ans(row);
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++) {
            ans.data[i][j]=0;
            for (int k = 0; k < row; k++) {
                ans.data[i][j] += data[i][k] * B.data[k][j];
            }
        }
    }
    return ans;
}
void print(matrix A) {
    for (int i = 0; i < A.row; i++) {
        for (int j = 0; j < A.col; j++) {
            cout << A.data[i][j];
            if (j == A.col - 1) cout << endl;
            else cout << ' ';
        }
    }
}
int main() {
    int n, k;
    while (cin >> n >> k) { // 注意 while 处理多个 case
        // cout << a + b << endl;
        matrix A = matrix(n);
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                int temp;
                cin >> temp;
                A.data[i][j] = temp;
            }
        }
        matrix ans=matrix(n);
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                if(i==j) ans.data[i][j]=1;
                else ans.data[i][j]=0;
            }
        }
        for(int i=0;i<k;i++){
            ans=ans*A;
        }
        print(ans);
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

07-09 18:28
门头沟学院 Java
写着提前批,结果还要实习4个月以上???
程序员牛肉:这种不用看,直接投了,面试的时候问对应的HR就行。有可能他们是直接复制的暑期实习的模板。
点赞 评论 收藏
分享
06-23 11:28
门头沟学院 Java
牛客91966197...:也有可能是点拒绝的时候自动弹的话术
点赞 评论 收藏
分享
陈逸轩1205:才105 哥们在养生呢
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-10 11:55
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务