zoukankan      html  css  js  c++  java
  • NUC1937 B.函数

    B.函数

    时间限制: 1000ms 内存限制: 65535KB

    问题描述

    请编程完成将数组中的数循环移动n个位置(正整数表示右移,负数表示左移,数值表示移动的位置间距),main函数调用其他函数,完成以下功能1)函数1:键盘输入10个数到数组;2)函数2:对这个数组完成移动(使用2个参数:移动距离、移动的数组)3)函数3:输出这10个数

    输入描述

    第一行仅一个整数n(-1000≤n≤1000);第二行为10个由空格分开的整数。

    输出描述

    这些整数循环移动n个位置后的结果,每两个数字由一个空格隔开。

    样例输入

    30 1 2 3 4 5 6 7 8 9

    样例输出

    7 8 9 0 1 2 3 4 5 6


    问题分析:

    数据移位问题,真的移动数据会后悔的,时间代价太大了。

    考虑下标移位就可以了。

    模除运算结果就会产生循环,题意中是循环移位。

    程序说明:

    程序代码尽量写的更加具有通用性。本题数据是10个,代码中的函数对于任意个数据都是适用的。

    函数数input(int n, int a[])的功能是输入n个数到数组a中。

    函数shift(int pos, int n, int maxn)的功能是从当前下标pos移动n个位置(数据总数为maxn),得到的结果是移动后下标的位置。

    函数output(int pos, int a[], int maxn)的功能是从下标pos开始输出循环输出数组a中的值(数据总数为maxn)。

    需要注意的是,如果输入的n为正数则左移,否则右移。

    题记:

    写一个程序并不难,难的是写通用的程序。这是职业程序员不懈的追求。


    参考链接:(略)


    AC的C++程序如下:

    #include <iostream>
    
    using namespace std;
    
    const int N = 10;
    int a[N];
    
    void input(int n, int a[])
    {
        for(int i=0; i<n; i++)
            cin >> a[i];
    }
    
    int shift(int pos, int n, int maxn)
    {
        int shift;
    
        shift = (pos - n) % maxn;
        if(shift < 0)
            shift += maxn;
    
        return shift;
    }
    
    
    void output(int pos, int a[], int maxn)
    {
        for(int i=0; i<maxn; i++)
            if(i == 0)
                cout << a[(pos + i) % maxn];
            else
                cout << " " << a[(pos + i) % maxn];
        cout << endl;
    }
    
    int main()
    {
        int n, pos;
    
        cin >> n;
    
        input(N, a);
    
        pos = shift(0, n, N);
    
        output(pos, a, N);
    
        return 0;
    }






  • 相关阅读:
    750. 角矩形的数量(动态规划)
    Python中with标签的使用详解
    GraalVM
    spring 源码解析(二) 2.下载源码,及错误的排除。
    spring 源码解析(一) spring的架构
    词典
    java日志框架 (五)
    java日志框架 (四) 日志相关
    java日志框架 (三) 日志框架使用 之 SLF4J + Log4j2
    java日志框架 (二) 日志框架使用 之 SLF4J + logback
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7563882.html
Copyright © 2011-2022 走看看