java 基础编程练习1
题目描述:
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
import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
//输入原始二维矩阵
int n = in.nextInt();
int m = in.nextInt();
int[][] rec = new int[n][m];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
rec[i][j] = in.nextInt();
}
}
//这里开始输入要求,k是要进行k次操作
int k = in.nextInt();
for (int x = 0; x < k; x++) {
String c = in.next();
int a = in.nextInt()-1;//记得减1,因为数组下标是从0开始的
int b = in.nextInt()-1;
//r是行变换;c是列变换
switch (c) {
case "r"://行变换,就是将对应行上元素,依次交换
for (int i = 0; i < m; i++) {
int temp = rec[a][i];
rec[a][i] = rec[b][i];
rec[b][i] = temp;
}
break;
case "c"://与行交换同理
for (int i = 0; i < n; i++) {
int temp = rec[i][a];
rec[i][a] = rec[i][b];
rec[i][b] = temp;
}
break;
}
}
//最后输出矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
System.out.print(rec[i][j] + " ");
}
System.out.println();
}
}
}