第四题边界写成迭代变量a 9%,哭了! 矩阵幂乘思路,参考弗洛伊德算法 #include <iostream> using namespace std; int map[4][4] = {{0, 1, 1, 1}, {1, 0, 1, 1}, {1, 1, 0, 1}, {1, 1, 1, 0}};//每一代迭代的结果 int mapTempt[4][4] = {0}; //用来装临时变量的 int mapPattern[4][4] = {{0, 1, 1, 1}, {1, 0, 1, 1}, {1, 1, 0, 1}, {1, 1, 1, 0}};//模式矩阵,结果就是这个矩阵的k次方的最后一个元素 int lineMutil(int i, int j){ //矩阵行列相乘 int sum=0; for(int k=0;k<4;++k){ sum += map[i][k] *mapPattern[k][j]; } return sum; } void mapMutil(){ //矩阵相乘 for(int i=0;i<4;++i){ for(int j=0;j<4;++j){ mapTempt[i][j] = lineMutil(i, j); } } } void copy(){ //拷贝临时矩阵到迭代矩阵, for(int i=0;i<4;++i){ for(int j=0;j<4;++j){ map[i][j] = mapTempt[i][j]; } } } int main() { int k; cin>>k; for(int i=1;i<k;++i){ //矩阵的k次幂 mapMutil(); copy(); } cout<<map[3][3]; //最后一个元素即是答案 return 0; }
点赞 评论

相关推荐

11-08 13:58
门头沟学院 Java
程序员小白条:竟然是蓝桥杯人才doge,还要花钱申领的offer,这么好的公司哪里去找
点赞 评论 收藏
分享
牛客网
牛客企业服务