【发布时间】:2021-05-12 17:49:54
【问题描述】:
所以我想编写一个 C++ 程序来执行 r 次数组旋转。现在一个数组旋转意味着数组的第一个元素移动到最后一个位置,第 (i) 个位置的所有其他元素移动到第 (i-1) 个位置。
我面临的问题是,即使我已经应用了一个 forloop 来确定旋转应该发生的次数,但数组也只旋转了一次。请帮助解决我所缺少的内容。
#include<iostream>
using namespace std;
int main()
{
int i,n,r,arr1[100],arr2[100];
cout<<"Please enter the number of elements in your array: "<<endl;
cin>>n;
cout<<"Please enter the number of rotations to be performed: "<<endl;
cin>>r;
for(i=0;i<n;i++)
{
cin>>arr1[i];
}
for(i=0;i<r;i++)
{
arr2[n-1]=arr1[0];
for(i=1;i<n;i++)
{
arr2[i-1]=arr1[i];
}
}
cout<<"Printing now:"<<endl;
for(i=0;i<n;i++)
{
cout<<arr2[i]<<"\t";
}
}
【问题讨论】:
-
您对所有循环都使用相同的计数器...
-
arr2仅依赖于未变异的arr1。 (您在循环中执行相同的分配,因此没有额外的更改)。 -
std::rotate可能会有所帮助。