设将n(n>1)个整数存放到一维数组R中。设计一个算法,将R中的序列循环左移P(0
分析:先将R中前P个元素逆置,再将剩下的元素逆置,最后将R中所有的元素再整体做一次逆置操作即可。
算法如下:
- #include <iostream>
- #define N 50
- using namespace std;
- void Reverse(int R[],int l,int r)
- {
- int i,j;
- int tmp;
- for (i=l,j=r;i<j;i++,j--)
- {
- tmp = R[i];
- R[i] = R[j];
- R[j] = tmp;
- }
- }
- void RCR(int R[],int n,int p)
- {
- if (n<=0 ||p>=n)
- {
- cout<<"ERROR"<<endl;
- }
- else
- {
- Reverse(R,0,p-1);
- Reverse(R,p,n-1);
- Reverse(R,0,n-1);
- }
- }
- int main(void)
- {
- int L,i;
- int R[N],n;
- cin>>L;
- cin>>n;
- for (i=0;i<=n-1;i++)
- cin>>R[i];
- RCR(R,n,L);
- for(i=0;i<=n-1;i++)
- cout<<R[i]<<" ";
- cout<<endl;
- return 0;
- }
阅读(1252) | 评论(0) | 转发(0) |