- 博主最近在学习数据结构,遇到一道很有意思的题目,拿来与诸位分享下。
- 题目如下
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201118104033769.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzUyNTU4OTk2,size_16,color_FFFFFF,t_70#pic_center)
- 请大家注意,循环位移的位数可能超过数组中元素个数;输入与输出的数据均以空格分割,其中输入的数据中第一个是循环移位的位数,第二个是数组中数据的个数,后面的是数组中的数据。
- 实现代码如下:
#include <iostream>
#include<stack>
#include<queue>
using namespace std;
int main()
{
int number1,number;
int baby;
int x;
stack<int> eros;
queue<int> marry;
cin>>number1>>baby;
number=number1%baby;
for(int i=1;i<=baby;i++)
{
cin>>x;
marry.push(x);
}
while((number+1)!=marry.front())
{
marry.push(marry.front());
marry.pop();
}
while (!marry.empty())
{
cout<<marry.front()<<" ";
marry.pop();
}
}
- 代码可行,但是时间复杂度有点高,有待改进。