zoukankan      html  css  js  c++  java
  • 7-1 数组循环左移 (20 分)

    本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥)个位置,即将a中的数据由(a0​​a1​​an1​​)变换为(am​​an1​​a0​​a1​​am1​​)(最前面的m个数循环移至最后面的m个位置)。如果还需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?

    输入格式:

    输入第1行给出正整数n(≤)和整数m(≥);第2行给出n个整数,其间以空格分隔。

    输出格式:

    在一行中输出循环左移m位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。

    输入样例:

    8 3
    1 2 3 4 5 6 7 8
    

      

    输出样例:

    4 5 6 7 8 1 2 3
    

      

    #include <stdio.h>
    int main()
    {
        int n, m, a[110];
        int i;
        scanf("%d %d", &n, &m);
        for(i=0; i<n; i++)
            scanf("%d", &a[i]);
        //8 3
        //1 2 3 4 5 6 7 8
        //4 5 6 7 8 1 2 3
        m %= n;
        if(n == m){
            for(i=0; i<n; i++){
                if(i == 0)
                printf("%d", a[i]);
                else
                printf(" %d", a[i]);
            }
        }
        else{
            for(i=m; i<n; i++){
            if(i == m)
                printf("%d", a[i]);
            else
                printf(" %d", a[i]);
            }
            for(i=0; i<m; i++)
            printf(" %d", a[i]);
        }
    }
    

      

    #include <stdio.h>
    #include<malloc.h>
    int main()
    {
        int N, M;
        int *Array;
        scanf("%d %d", &N, &M);
        Array = (int *)malloc(sizeof(int)*(N+1));
        for(int i=1; i<=N; ++i)
            scanf("%d", &Array[i]);
        M = M%N;
        for(int i=M+1; i<=N; i++){
            if(i == M+1)
                printf("%d", Array[i]);
            else
                printf(" %d", Array[i]);
        }
        for(int i=1; i<=M; i++)
           printf(" %d", Array[i]);
    }
    

      

  • 相关阅读:
    cmd git常用命令使用
    vue2.0 vue-qr生成二维码
    全局css设置
    input 输入框 json格式展示
    eslint 常用配置及说明
    es6中promise 使用总结
    vue 自定义全局组件
    vue element 表头添加斜线
    indexedDB 使用
    黑客攻防从入门到精通(攻防与脚本编程篇)
  • 原文地址:https://www.cnblogs.com/Jie-Fei/p/9648796.html
Copyright © 2011-2022 走看看