题目描述
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; }