第四题边界写成迭代变量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; }