算法设计(考研系列)

1297阅读 0评论2012-08-13 高傲的活着
分类:C/C++

  设将n(n>1)个整数存放到一维数组R中。设计一个算法,将R中的序列循环左移P(0

分析:先将R中前P个元素逆置,再将剩下的元素逆置,最后将R中所有的元素再整体做一次逆置操作即可。

算法如下:

点击(此处)折叠或打开

  1. #include <iostream>
  2. #define N 50
  3. using namespace std;

  4. void Reverse(int R[],int l,int r)
  5. {
  6.     int i,j;
  7.     int tmp;
  8.     for (i=l,j=r;i<j;i++,j--)
  9.     {
  10.         tmp = R[i];
  11.         R[i] = R[j];
  12.         R[j] = tmp;
  13.     }
  14. }

  15. void RCR(int R[],int n,int p)
  16. {
  17.     if (n<=0 ||p>=n)
  18.     {
  19.         cout<<"ERROR"<<endl;
  20.     }
  21.     else
  22.     {
  23.         Reverse(R,0,p-1);
  24.         Reverse(R,p,n-1);
  25.         Reverse(R,0,n-1);
  26.     }
  27. }

  28. int main(void)
  29. {
  30.    int L,i;
  31.    int R[N],n;
  32.    cin>>L;
  33.    cin>>n;
  34.    for (i=0;i<=n-1;i++)
  35.      cin>>R[i];
  36.    RCR(R,n,L);

  37.    for(i=0;i<=n-1;i++)
  38.      cout<<R[i]<<" ";
  39.      cout<<endl;
  40.     return 0;
  41. }
上一篇:二叉树学习
下一篇:连续存储数组的算法演示