题目1474:矩阵幂

来源:互联网 发布:淘宝cf刷枪软件 编辑:程序博客网 时间:2024/05/18 03:41


#include<iostream>using namespace std; int matrix[10][10];//用大数组来记录矩阵int result[10][10];//用来记录计算结果矩阵int tmpResult[10][10];//输入矩阵void colect(int &n){    int i= 0;    int j= 0;    for(i =0 ;i < n; i++)    {        for(j =0; j< n; j++)        {            cin >>matrix[i][j];            result[i][j] = matrix[i][j];        }           }}//某一行乘以一列int rowTimeCol(int &row ,int &col ,int &n){    int i =0;    int tmp =0;    for(i =0; i< n; i++)    {        tmp += result[row][i] * matrix[i][col];    }    return tmp;}//void calculateOnce(int &n){    int i =0;    int j =0;    int p=0;    int q =0;    for(i =0; i< n; i++)    {        for(j =0; j<n; j++)        {            tmpResult[i][j] = rowTimeCol(i,j,n);        }    }    for(p =0; p< n; p++)    {        for(q =0; q<n; q++)        {            result[p][q] = tmpResult[p][q];        }    }}//计算k次幂void calculate(int &n,int &k){    int i =0;     for(i=0 ; i< k-1; i++)    {        calculateOnce(n);    }}//输出矩阵void print(int &n){    int i =0;    int j =0;    for(i =0; i < n; i++)    {        for(j=0; j < n; j++)        {            if(j !=0)            {                cout << " " ;            }            cout << result[i][j];        }        cout << endl;         }}int main(){    int T;//记录要求矩阵的个数    int n;//记录矩阵行和列数    int k; //记录k次幂     cin >> T;//输入几组测试数据    for(int i =0; i< T; i++)    {        cin >> n >> k;        colect(n);//输入n阶矩阵        calculate(n,k);//计算k次幂        print(n);    }     return 0;}/**************************************************************    Problem: 1474    User: itswyy    Language: C++    Result: Accepted    Time:10 ms    Memory:1520 kb****************************************************************/


1 0
原创粉丝点击