2020.5.13
学习的第23天
今天赶了一个夜班哈哈哈
还行
题目:给定N个整数组成的序列,每次交换当前第x个与第y个整数,要求输出最终的序列。
第一行为序列的大小N(1< =N< =1000)和操作个数M(1< =M< =1000)。
第二行包含N个数字,表示初始序列。
接下来M行,每行两个整数x,y (1< =x,y< =N),表示要交换的两个整数。在一次交换中,如果x和y相等,则不会改变序列的内容。
例题:
输入:
5 2 //5代表输入五个数,2代表交换几次
1 2 3 4 5
1 2 //代表将第一个数与第二个数交换,x=1,y=2
3 4 //代表将第三个数与第四个数交换, x=3,y=4
输出:
2
1
4
3
5
C 代码
#include<stdio.h>
int main()
{
int N, m, i, x, y, temp;
int a[100];
scanf("%d%d",&N,&m);
for (i = 0; i < N; i++)
scanf("%d", &a[i]);
while (m--)
{
scanf("%d%d",&x,&y);
temp = a[x - 1];
a[x - 1] = a[y - 1];
a[y - 1] = temp;
}
for (i = 0; i < N; i++)
printf("%d\n", a[i]);
return 0;
}
Java 代码
import java.util.Scanner;
public class 特别的数交换 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int N, m, i, t, x, y;
N = input.nextInt();
m = input.nextInt();
int[] array = new int[N];
for (i = 0; i < N; i++)
array[i] = input.nextInt();
for (i = 0; i < m; i++) {
x = input.nextInt();
y = input.nextInt();
t = array[x - 1];
array[x - 1] = array[y - 1];
array[y - 1] = t;
}
for(int j:array)
System.out.println(j);
}
}
一开始看这个题目,我都没看懂,看了几遍例子才知道他要表达的意思,这次C和Java的思路是一样的~~
如有错误恳请大佬指点,感激不尽~~
算法题目来源:https://www.dotcpp.com/