刚开始看题目然后分析以为是用两个队列然后互相导入,写了代码以后发现各种问题解决起来很麻烦,换了一种思路 。
#include<iostream>
using namespace std;
int s[1005];
int main()
{
int n;
int k;
cin>>n>>k;
for(int i=0;i<n;i++){
s[i] = i+1;
}
for(int i=0;i<k;i++){
int a,b;
cin>>a>>b;
int m = 0;
for(int j=0;j<n;j++){
if(s[j] == a)
m = j;
}
if(b > 0){
for(int p=0;p<b;p++){
s[m] = s[m+1];
s[m+1] = a;
m = m+1;
}
}
if(b < 0){
for(int p=0;p<-b;p++){
s[m] = s[m-1];
s[m-1] = a;
m = m-1;
}
}
}
for(int i=0;i<n;i++){
cout<<s[i]<<" ";
}
cout<<endl;
return 0;
}
本文探讨了如何在给定题目中,避免使用双队列复杂操作,通过创新思路解决了对数组元素顺序进行正负步长修改的问题。通过实例代码和逻辑解析,分享了简化问题后的解决方案。

2606

被折叠的 条评论
为什么被折叠?



