##算法提高 交换Easy(给定N个整数组成的序列,每次交换当前第x个与第y个整数,要求输出最终的序列。)
输入描述:
第一行为序列的大小N(1<=N<=1000)和操作个数M(1<=M<=1000)。
第二行包含N个数字,表示初始序列。
接下来M行,每行两个整数x,y (1<=x,y<=N),表示要交换的两个整数。在一次交换中,如果x和y相等,则不会改变序列的内容。
输入样例:
5 2
1 2 3 4 5
1 2
3 4
输出描述:
输出N行,为交换后的序列中的数。
输出样例:
2
1
4
3
5
C语言实现代码:
#include<stdio.h>
#define M 1000
#define N 1000
void change(int *a,int n,int m);
int main(){
int i,m,n;
int a[M];
scanf("%d%d",&m,&n);
for(i=0;i<m;i++){
scanf("%d",&a[i]);
}
change(a,n,m);
for(i=0;i<m;i++)
printf("%d\n",a[i]);
return 0;
}
void change(int a,int n,int m)
{
int i,j=n; int x,y;
while(j!=0){
scanf("%d%d",&x,&y);
for(i=0;i<m;i++){
if ((a+i)==x)
(a+i)=y;
else if((a+i)==y)
*(a+i)=x;}
j–;
}
}