题目描述
KiKi有一个矩阵,他想知道经过k次行变换或列变换后得到的矩阵。请编程帮他解答。

输入描述:
第一行包含两个整数n和m,表示一个矩阵包含n行m列,用空格分隔。 (1≤n≤10,1≤m≤10)

从2到n+1行,每行输入m个整数(范围-231~231-1),用空格分隔,共输入n*m个数,表示第一个矩阵中的元素。
接下来一行输入k,表示要执行k次操作(1≤k≤5)。接下来有k行,每行包括一个字符t和两个数a和b,中间用空格格分隔,t代表需要执行的操作,当t为字符'r'时代表进行行变换,当t为字符'c'时代表进行列变换,a和b为需要互换的行或列(1≤a≤b≤n≤10,1≤a≤b≤m≤10)。

输出描述:
输出n行m列,为矩阵交换后的结果。每个数后面有一个空格。

解题思路
搞明白交换是怎么交换的就可以了。

代码

#include <iostream>
#include <string>
using namespace std;

int main()
{
    int n,m, i, j;
    cin>>n>>m;
    int a[12][12];
    for(i = 0;i < n;i++)
        for(j = 0;j < m;j++)
            cin>>a[i][j];//输入矩阵的每个元素
    int num;//要交换的次数
    cin>>num;//输入要交换的次数
    int n1,n2;
    char c;
    while(num)//num不为0的话就进while
    {
        cin>>c>>n1>>n2;//输入要交换的三个关键参数
        if(c=='r')//交换行
        {
            for(i=0;i<m;++i)//搞明白行交换是怎么进行的
            {        
                int temp=a[n1-1][i];//有一个temp就可以了
                a[n1-1][i]=a[n2-1][i];
                a[n2-1][i]=temp;
            }
        }
        else if(c=='c')//交换列
        {
            for(i=0;i<n;++i)//搞明白列交换是怎么进行的
            {        
                int temp=a[i][n1-1];//temp进行过度
                a[i][n1-1]=a[i][n2-1];
                a[i][n2-1]=temp;
            }
        }
        --num;//交换一次就减一次
    }
    for(i = 0;i < n;i++)
    {
        for(j = 0;j < m;j++)
            cout<<a[i][j]<<" ";//输入矩阵的每个元素
        cout<<endl;
    }

    return 0;
}