C++ 阵列修改[左旋转]
所以,我刚刚解决了这个问题: 在我解决了这个问题后,我检查了其他人的密码 我很好奇他的代码是怎么工作的,你们能帮我找出他的代码是怎么工作的吗。 我的代码:C++ 阵列修改[左旋转],c++,arrays,C++,Arrays,所以,我刚刚解决了这个问题: 在我解决了这个问题后,我检查了其他人的密码 我很好奇他的代码是怎么工作的,你们能帮我找出他的代码是怎么工作的吗。 我的代码: #包括 使用名称空间std; int main() { int n; int d; cin>>n>>d; int-arr[n]; int-lrotate[n]; 对于(int i=0;i>arr[i]; } 如果(n-d>0) { 对于(inti=d;i,他使用了简单的算法来解决这个问题 如果N==d,则数组中没有变化 如果第一个for循环中
#包括
使用名称空间std;
int main()
{
int n;
int d;
cin>>n>>d;
int-arr[n];
int-lrotate[n];
对于(int i=0;i>arr[i];
}
如果(n-d>0)
{
对于(inti=d;i,他使用了简单的算法来解决这个问题
如果N==d,则数组中没有变化
如果第一个for循环中的“start”不等于0(例如:start=3表示数组必须旋转3次),则从索引3到数组末尾填充数组
所以start是逐渐递增的,若start==N,那个么start变为0,数组再次填充在索引0到索引3中
第二个代码不旋转,而是按照所需的顺序将数字读入数组。我很好奇他的代码是如何工作的,尤其是第7行和第12行。这是学习如何使用调试器的最佳时机。因此,当有人发布一个没有代码的问题时,我们通常会问“到目前为止你都尝试了什么?”.另一方面,到目前为止,你理解了什么?
#include <iostream>
using namespace std;
int main()
{
int n;
int d;
cin >> n >> d;
int arr[n];
int lrotate[n];
for (int i=0; i<n; i++)
{
cin >> arr[i];
}
if (n-d>0)
{
for (int i=d; i<n;i++)
{
lrotate[i-(d)]=arr[i];
}
for (int i=0; i<n; i++)
{
lrotate[i+(n-d)]=arr[i];
}
for (int i=0; i<n; i++)
{
cout << lrotate[i] << " ";
}
}
}
#include <iostream>
using namespace std;
int main() {
int N, d, i;
cin >> N >> d;
int start = N - d;
int *arr = new int[N];
for (i=0; i<N; ++i)
{
if (start == N)
start = 0;
cin >> arr[start++];
}
for (i=0; i<N; ++i)
cout << arr[i] << " ";
return 0;
}