题目1474:矩阵幂


#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
****************************************************************/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值