题目描述:
已知一个有n个数的数组,a[i]=i(i=1,2…n)。接下来有m个操作,求每一步操作过后的数组。
输入格式:
第一行,两个整数n,m。(5<=n<=100,0<=m<=10)
接下来m行,先输入一个数k
若k=1,则再输入两个数a,b,表示交换数组第a位和第b位
若k=2,则再输入一个数a,表示删除数组第a位,后面的元素向前移一个位置。
输出格式:
先输出原始数组
输出m行,每行表示每种操作过后的数组
样例输入:
5 2 1 1 3 2 2
样例输出:
1 2 3 4 5 3 2 1 4 5 3 1 4 5
时间限制: 1000ms
空间限制: 256MB
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m,min,a[100001],b,c,x,y;
cin>>n>>m;
for(int i=1;i<=n;i++){
cout<<i<<" ";
a[i]=i;
}cout<<endl;
for(int i=0;i<m;i++){
cin>>b;
if(b==1){
cin>>x>>y;
swap(a[x],a[y]);
for(int j=1;j<=n;j++){
cout<<a[j]<<" ";
}cout<<endl;
}else if(b==2){
cin>>c;
a[c]=a[c+1];
n=n-1;
for(int j=c+1;j<=n;j++){
swap(a[j],a[j+1]);
}
for(int j=1;j<=n;j++){
cout<<a[j]<<" ";
}cout<<endl;
}
}
return 0;
}