线性时间内字符串向右移动

#include <iostream>

using namespace std;

void reverse(char* c,int n,int m)
{
    int i,j;
    for(i=n,j=m;i<=j;i++,j--)
    {
        swap(c,c[j]);
    }
}

void move(char*c ,int k,int n)
{
      k=k%8;

        reverse(c,0,n-k-1);
        reverse(c,n-k,n-1);
        reverse(c,0,n-1);

}


int main()
{

    char c[8]={'a','b','c','d','1','2','3','4'};

    int k;
    cin>>k;
   move(c,k,8);
    for(int i=0;i<8;i++)
        cout<<c<<" ";

    return 0;
}

posted @ 2013-03-15 05:39  码代码的猿猿  阅读(122)  评论(0编辑  收藏  举报