生成一维整数数组,数组长度为 10,范围从 1 到 20

Posted

技术标签:

【中文标题】生成一维整数数组,数组长度为 10,范围从 1 到 20【英文标题】:Generate one dimensional array of integers with array length of 10, ranging from 1 to 20 【发布时间】:2020-12-07 14:46:00 【问题描述】:

我正在努力帮助我的兄弟完成他的算法作业,只是我对 C# 不熟悉,而且我也对这个问题感到困惑。

基本上该指令是生成一个长度为 10 的整数的一维数组,范围从 1 到 20。然后打印整数的最大和,当你将数组除以 2 时,左边的整数和小于右边的整数之和。

示例结果:

生成的整数数组:1,5,10,3,5,20,6,8,2,14

左侧最大值 = 24 (1+5+10+3+5=24)

右侧最大值 = 50 (20+6+8+2+14=50)

生成数组很容易,令人困惑的部分是数组的前半部分的总和必须小于后半部分。任何帮助都会非常感激!

【问题讨论】:

从左到右逐步移动拆分索引,同时跟踪两边的总和。所以最初,分割索引左= 6,右 = 68,依此类推。继续此操作直到 left >= right 并且您知道您刚刚通过了正确的分割点。 虽然我可以尝试研究和理解这一点,但示例代码将不胜感激 【参考方案1】:

我认为一个好主意是在生成过程中检查数组左右部分的总和。如果在某个时刻左总和大于您可以添加到下一个右总和之间的差值。

    Random random = new Random();
    int[] array = new int[10];
    int sumleft = 0;
    int sumright = 0;
    int number;
    for (int i = 0; i < array.Length / 2; i++)
    
        number = random.Next(1, 21);
        array[i] = number;
        sumleft += array[i];
        number = random.Next(1, 21);
        sumright += number;
        if (sumleft >= sumright)
         
            number += sumleft - sumright + 1;
            sumright += sumleft - sumright + 1;
        
        array[i + 5] = number;
    

我检查了几次结果,数组的右侧总是大于左侧,并且数字在指示的范围内。

【讨论】:

以上是关于生成一维整数数组,数组长度为 10,范围从 1 到 20的主要内容,如果未能解决你的问题,请参考以下文章

用C语言实现一维数组中删除第N个元素的程序怎么写

随机生成指定范围内的随机数,放在指定长度的数组内

Java入门_一维数组_第二题_随机生成数

有一个整数数组,数组长度为10万,整数的范围位于3到900之间,请用Java实现时间复杂度尽可能低的排序算法(假设内存空间足够大)

用java定义一个一维数组,其中随机生成500个1到50之间整数,输出出现最多的偶

c语言 .从键盘输入10个整数,存到一维数组中,并求这10个整数的和?