C++程序 打印给定数组的所有可能旋转

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++编写一个程序,可以打印出给定数组的所有旋转版本。我们通过将原数组保存到一个新数组中,然后获取新数组的所有旋转版本来实现这个程序。这个绕口令的程序可能听起来有点复杂,但实际上它非常简单,并且几乎可以应用于所有旋转问题。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

C++ 示例