【牛客】矩阵交换

题目链接:https://www.nowcoder.com/practice/ec44d4ff8c794b2f9205bdddbde96817?tpId=107&tqId=33389&tPage=5&rp=5&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking

题目描述

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列,为矩阵交换后的结果。每个数后面有一个空格。
示例1

输入

复制
2 2
1 2
3 4
1
r 1 2

输出

复制
3 4 
1 2 

注意字符问题

 1 #include <stdio.h>
 2 int main()
 3 {
 4     int a[15][15],b[15][15];
 5     int i,j,n,m,flag=1,k;
 6     scanf("%d%d",&n,&m);
 7     for(i=0;i<n;i++){
 8         for(j=0;j<m;j++){
 9             scanf("%d",&a[i][j]);
10         }
11     }
12     scanf("%d",&k);
13     while(k--){
14         char ch;
15         getchar();
16         ch=getchar();
17         int x,y;
18         scanf("%d%d",&x,&y);
19         x--;
20         y--;
21         if(ch=='r'){
22             for(j=0;j<m;j++){
23                 int t=a[x][j];
24                 a[x][j]=a[y][j];
25                 a[y][j]=t;
26             }
27         }else if(ch=='c'){
28             for(i=0;i<n;i++){
29                 int t=a[i][x];
30                 a[i][x]=a[i][y];
31                 a[i][y]=t;
32             }
33         }
34     }
35     for(i=0;i<n;i++){
36         for(j=0;j<m;j++){
37             printf("%d ",a[i][j]);
38         }
39         printf("\n");
40     }
41 }

 

posted @ 2020-04-10 19:08  午夜的行人  阅读(60)  评论(0编辑  收藏
Live2D