Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2222947
  • 博文数量: 556
  • 博客积分: 11457
  • 博客等级: 上将
  • 技术积分: 5973
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-24 22:33
文章分类

全部博文(556)

文章存档

2013年(22)

2012年(74)

2011年(460)

分类: C/C++

2012-08-13 17:09:33

  设将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. }
阅读(1252) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~