C++程序 打印给定数组的所有可能旋转
在C++中,旋转数组是一种常见的问题,有时需要对给定数组进行旋转,例如,如果将数组 [1,2,3,4,5] 旋转3次,结果将是 [3,4,5,1,2]。在这个问题中,我们需要编写一个程序,可以打印出给定数组的所有旋转版本。
方法
我们可以使用C++中的一个循环来实现这个程序。具体而言,我们可以将原数组保存到一个新数组中,然后通过将该新数组的元素旋转到左侧来创建每个旋转版本。例如,如果原数组是 [1, 2, 3, 4, 5] ,我们将其保存在一个新数组 arr
中,然后通过以下代码实现所有旋转数组:
#include <iostream>
using namespace std;
int main()
{
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr)/sizeof(arr[0]);
// 打印原数组
for (int i = 0; i < n; i++)
cout << arr[i] << " ";
cout << endl;
// 移动每个元素到数组的左侧,并打印所有旋转版本
for (int i = 0; i < n; i++)
{
int tmp = arr[0];
for (int j = 0; j < n-1; j++)
arr[j] = arr[j+1];
arr[n-1] = tmp;
// 打印旋转版本
for (int j = 0; j < n; j++)
cout << arr[j] << " ";
cout << endl;
}
return 0;
}
上面的代码标注了C++的注释,程序首先将原始数组保存到名为arr的新数组中,然后使用一个循环来遍历arr中的每个元素。在循环主体中,我们创建一个名为 tmp 的变量,用于保存 arr 的第一个元素。然后,我们使用另一个循环遍历 arr 的所有元素,将每个元素向左移动一个位置。最后,我们将 arr 的最后一个元素设置为 tmp,这样就完成了一次数组旋转。最后,我们将所有旋转版本打印出来,以便查看结果。
完整程序
以下是完成数组旋转和打印所有旋转版本C++程序的完整代码:
#include <iostream>
using namespace std;
int main()
{
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr)/sizeof(arr[0]);
// 打印原数组
for (int i = 0; i < n; i++)
cout << arr[i] << " ";
cout << endl;
// 移动每个元素到数组的左侧,并打印所有旋转版本
for (int i = 0; i < n; i++)
{
int tmp = arr[0];
for (int j = 0; j < n-1; j++)
arr[j] = arr[j+1];
arr[n-1] = tmp;
// 打印旋转版本
for (int j = 0; j < n; j++)
cout << arr[j] << " ";
cout << endl;
}
return 0;
}
结论
在这篇文章中,我们介绍了如何使用C++编写一个程序,可以打印出给定数组的所有旋转版本。我们通过将原数组保存到一个新数组中,然后获取新数组的所有旋转版本来实现这个程序。这个绕口令的程序可能听起来有点复杂,但实际上它非常简单,并且几乎可以应用于所有旋转问题。