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]);
    }
    

      

  • 相关阅读:
    框架Frameset 的JS 跳转 刷新 [转]
    Javascript的变量与delete操作符
    字符串替换方法的优劣
    Nutch介绍(译)
    权限系统—数据授权模型
    Apache Synapse介绍(译)
    java动态代理
    ASM简介
    maven使用技巧——构件搜索
    springSecurity源码分析——org.springframework.security.web.FilterInvocation类
  • 原文地址:https://www.cnblogs.com/Jie-Fei/p/9648796.html
Copyright © 2011-2022 走看看