一、题目链接
http://noi.openjudge.cn/ch0108/01/
二、解题思路
◎ 实际交换时,由于矩阵行标从0开始,因此两个行号m和n均需要先做m--和n--的操作;
◎ 从第1列开始,到第5列为止,依次交换第m行和第n行的对应元素nums[m][c]和nums[n][c],这里c为列号,0 <= c < 5。
三、Java程序
import java.util.Scanner;
public class Main {
public void swapTwoRows(int[][] nums, int m, int n) {
m--;
n--;
int col = nums[0].length;
for (int c = 0; c < col; c++) {
int t = nums[m][c];
nums[m][c] = nums[n][c];
nums[n][c] = t;
}
}
public static void main(String[] args) {
Main test = new Main();
Scanner input = new Scanner(System.in);
int[][] nums = new int[5][5];
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
nums[i][j] = input.nextInt();
}
}
int m = input.nextInt();
int n = input.nextInt();
test.swapTwoRows(nums, m, n);
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(nums[i][j] + " ");
}
System.out.println();
}
}
}
四、C++程序
#include <iostream>
using namespace std;
int main()
{
int nums[5][5];
int m;
int n;
int i;
int j;
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
cin >> nums[i][j];
}
}
cin >> m;
cin >> n;
m--;
n--;
for (i = 0; i < 5; i++)
{
j = nums[m][i];
nums[m][i] = nums[n][i];
nums[n][i] = j;
}
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
cout << nums[i][j] << " ";
}
cout << endl;
}
return 0;
}