• [C++]PAT乙级1008.数组元素循环右移问题 (20/20)


    /*
    1008. 数组元素循环右移问题 (20)
    
    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    
    一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0 A1……AN-1)变换为(AN-M …… AN-1 A0 A1……AN-M-1)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?
    
    输入格式:每个输入包含一个测试用例,第1行输入N ( 1<=N<=100)、M(M>=0);第2行输入N个整数,之间用空格分隔。
    
    输出格式:在一行中输出循环右移M位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。
    
    输入样例:
    6 2
    1 2 3 4 5 6
    输出样例:
    5 6 1 2 3 4
    */
    /*
        思路1:
            数组长度为N+1;每次移动一位
        思路2:
            新建缓冲数组;
    */
    #include<stdio.h>
    using namespace std;
    
    //int count=0;//test
    
    bool shift(int *array, int length){//length:数组长度;数组真实元素个数:从下标1开始,共计length-1个元素
        if(length<1)
            return false;//移动失败
        //printf("shifting %d.
    ", ++count);//test
        array[0] = array[length-1];
        for(int i=length;i>0;i--){
            array[i] = array[i-1];
        }
        return true;
    }
    
    void print(int *array, int length){
        for(int i=1;i<length;i++){
            printf("%d%s", array[i], (i-length+1<0?" ":"
    "));//技巧:对于消去末尾处最后一个空格的巧妙解决办法
        }
    }
    
    int main()
    {
        int n,shift_distance;
        int *array;
        scanf("%d %d", &n, &shift_distance);
        array = new int[n+1];
    
    //  input data
        array[0] = 0;
        for(int i=1,len = n + 1;i<len;i++){
            scanf("%d", array+i);
        }
        for(int i=0;i<shift_distance;i++){
            shift(array, n + 1);
            //print(array,n+1);//test
        }
        print(array,n+1);
        return 0;
    }
    /*
    测试用例:
    10 4
    78 67 56 34 90 671 1 58 37 70
    
    6 2
    1 2 3 4 5 6
    */
    

      

  • 相关阅读:
    [转载]Bat语法
    [转载]白手起家学习使用flex
    [转载]Highcharts结合Asp.net实现动态数据股票式图形显示实例
    [转]uploadify3.0详细使用说明
    转帖:UML实践用例图、顺序图、状态图、类图、包图、协作图
    [转]JQuery操作Table
    [转]Chrome developer tool介绍(javascript调试)
    [转载]C# 指针之美
    [转载]C# 温故而知新: 线程篇(二)
    [转载]Javascript定义类(class)的三种方法
  • 原文地址:https://www.cnblogs.com/johnnyzen/p/8860330.html
Copyright © 2020-2023  润新知