题目描述:
给定N个整数组成的序列,每次交换当前第x个与第y个整数,要求输出最终的序列。
输入格式:
第一行为序列的大小N(1< =N< =1000)和操作个数M(1< =M< =1000)。
第二行包含N个数字,表示初始序列。
接下来M行,每行两个整数x,y (1< =x,y< =N),表示要交换的两个整数。在一次交换中,如果x和y相等,则不会改变序列的内容。
输出格式:
输出N行,为交换后的序列中的数。
样例输入:
5 2
1 2 3 4 5
1 2
3 4
样例输出:
2
1
4
3
5
代码实现:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int []arr = new int[n+1];
int []x = new int[m];
int []y = new int[m];
for (int i = 1;i<=n;i++){
arr[i] = sc.nextInt();
}
for(int i = 0;i<m;i++){
x[i] = sc.nextInt();
y[i] = sc.nextInt();
}
for (int i = 0;i < m;i++){
if(arr[x[i]] != arr[y[i]]){
arr[x[i]] = arr[x[i]]^arr[y[i]];
arr[y[i]] = arr[x[i]]^arr[y[i]];
arr[x[i]] = arr[x[i]]^arr[y[i]];
}
}
for(int i = 1;i<=n;i++){
System.out.println(arr[i]);
}
sc.close();
}
}
由于本人自己学习方向的改变,以后的OJ题解都会由Java来分享。