(huitu.oj)Y306讲解

 声明:

本题依旧是用c++讲解,所以别的语言的,懂?

题目一览:

说明

你和小华正在玩纸杯猜数游戏。
小华在桌面上扣放了一排n个纸杯,依次标号为1∼n。每个纸杯内侧写有一个数字。
小华先将每个纸杯上的数字告诉小明,然后他快速的进行了如下m次交换操作:
选择两个纸杯u和v,交换它们的位置。(u,v相同表示本次不交换)
现在小华想让你回答:m次操作后依次排列的纸杯上的数字分别是多少。

输入格式

第一行输入两个数n,m,分别表示纸杯数、操作数(1≤n,m≤50000);
第二行输入n个数,分别表示每个纸杯内侧的数字之后m行,每行两个数u,v,表示将这两个纸杯交换。

输出格式

输出一行n个数,表示交换后每个纸杯内侧的数字依次是多少。以空格隔开。

样例

输入数据 1

8 3
1 4 7 20 5 3 11 6
3 7
2 6
5 3

Copy

输出数据 1

1 3 5 20 11 4 7 6

本题思路:

因为本题只是让换数据而已,所以完全可以建一个临时变量来完成交换。

(不会有人现在就划走了吧)

本题方法:

如何交换两个数的数据:

在思路上我提到过,可以建一个临时变量来交换。所以就得到了以下代码:

假设第一个数是u,第二个数是v:

if(u!=v){
	int l=u;
	u=v;
	v=l;
}

 这样,就交换完成了,神不神奇?

(不会又有人划走了吧)

本题需要注意的小瑕疵:

注意啦!本题数组从零开始存的,交换的时候一定要把这里(加粗的地方—》a[下标])给减一啊

最后的题解:

#include<bits/stdc++.h>
using namespace std;

int a[50010];
int main(){
	int n,m;
	cin>>n>>m;
	for(int i=0;i<n;i++) cin>>a[i];
	int u,v;
	for(int i=1;i<=m;i++){
		cin>>u>>v;
		if(u!=v){
			int l=a[u-1];
			a[u-1]=a[v-1];
			a[v-1]=l;
		}
	}
	for(int i=0;i<n;i++) cout<<a[i]<<" ";
} 

对,就这么简单,所以我讲方法的时候才说应该会有人划走。

总结:

写了这个博客,我教给大家了怎么交换两个变量的数据以及代码,刚知道的要记下来哦😊。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值