题目:给定N个整数组成的序列,每次交换当前第x个与第y个整数,要求输出最终的序列。(算法学习,c+Java(在学ing))

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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值