zoukankan      html  css  js  c++  java
  • PAT乙级1008

    题目链接

    https://pintia.cn/problem-sets/994805260223102976/problems/994805316250615808


    查了查网上的题解,情况如下:

    题解一

    我这个方法应该是移了n+m次,看起来只用了一个数组,其实也是用了两个数组吧……惭愧惭愧

    // PAT BasicLevel 1008
    // https://pintia.cn/problem-sets/994805260223102976/problems/994805316250615808
    
    #include <iostream>
    using namespace std;
    
    int main()
    {
        // 获取用户输入的n和m以及n个整数
        int n,m;
        int arr[200];
        cin >> n >> m;
        for(int i=0;i<n;i++){
            cin >> arr[i];
        }
    
        // m==0则不用移动
        if(m>0){
            // 假如有10个数,右移13位其实相当于13%10=3位。
            // 所以m一定小于n,所以把数组大小定义为200
            m = m % n;
    
            // 整体右移m位
            for(int i=n-1;i>=0;i--){
                arr[i+m]=arr[i];
            }
    
            // 把最右侧的m个数字循环右移到左侧
            for (int i = n-1; i < n + m;i++){
                arr[i%n]=arr[i];
            }
        }
    
    
        // 输出结果
        cout << arr[0];
        for(int i=1;i<n;i++){
            cout << ' ' << arr[i]; 
        }
    
        //system("pause");
        return 0;
    }
    

    题解二

    这道题的参考链接里说这是链表,讲错了吧,这儿哪有链表……核心在于三次逆置

    但时间(3ms)与内存占用(400KB左右)和题解一差不多,可能测试用例输入规模不够大吧。

    // PAT BasicLevel 1008
    // httarrs://arrintia.cn/arrroblem-sets/994805260223102976/arrroblems/994805316250615808
    
    #include <iostream>
    #include <algorithm>
    using namespace std;
    
    int main()
    {
        // 获取用户输入的n和m以及n个整数
        int n,m;
        cin >> n >> m;
        int* arr=new int[n];
        for(int i=0;i<n;i++){
            cin >> arr[i];
        }
    
        // m==0则不用移动
        if(m>0){
            // 假如有10个数,右移13位其实相当于13%10=3位。
            // 所以m一定小于n,所以把数组大小定义为200
            m = m % n;
    
            // 三次逆置
            reverse(arr, arr + n - m);
            reverse(arr + n - m, arr + n);
            reverse(arr, arr + n);
        }
    
    
        // 输出结果
        cout << arr[0];
        for(int i=1;i<n;i++){
            cout << ' ' << arr[i]; 
        }
    
        //system("pause");
    
        delete[] arr;
        return 0;
    }
    

    作者:@臭咸鱼

    转载请注明出处:https://chouxianyu.github.io

    欢迎讨论和交流!


  • 相关阅读:
    CCF——分蛋糕(2017-3)
    CCF——公共钥匙盒(2017-9)
    CCF——打酱油(2017-9)
    CCF——游戏(2017-12)
    SDS-简单动态字符串
    Redis主从复制
    MySQL 知识点
    MySQL 死锁
    Java 类加载机制
    Java IO
  • 原文地址:https://www.cnblogs.com/chouxianyu/p/11297909.html
Copyright © 2011-2022 走看看