繁体   English   中英

在数组中搜索一个递增的整数序列

[英]Searching an array for a sequence of increasing integers

这是任务:

创建一个程序,该程序查看200元素的随机生成整数数组,其值介于25225之间。 程序应该寻找n个连续的包含非递减值的索引 - 例如:

28, 57, 88, 153, 201被认为是成功的

28, 57, 32, 153, 201被视为失败。

输出应该类似于:

An increasing consecutive run of 5 elements found at:

Index 41 contains 28
Index 42 contains 57
Index 43 contains 88
Index 44 contains 153
Index 45 contains 201

有很多方法可以完成这项任务。 我在下面提供了一个工作分步解决方案。

解决方案

首先,应用给定的信息(下限、上限、数组大小)。

    int min = 25;
    int max = 225;
    int set[] = new int[200];

n设置为任意值。 我将使用 5 进行演示。

    int n = 5;

创建一个counter变量来记录找到的连续整数的数量。 进一步,我们将添加逻辑以在每次数字序列不起作用时重置计数器。

    int counter = 0;

开始迭代。 创建一个for循环,用指定边界之间的“200”个元素填充数组。

    for(int i = 0; i < set.length; i++){
        set[i] = (int)(Math.random() * (max - min + 1) + min);

打印出每个索引的内容。

        System.out.println((i + 1) +") " + "Index " + i + " contains " + set[i]);

第一个if语句:每次序列符合模式时,这会将 'counter' 增加 1,但在比较失败时将其重置为 0。

   if(i > 0){   
        if(set[i] >= set[i-1]){counter++;}
        else{counter = 0;}  
    }// End if

现在创建一个 while 语句,当counter的值等于n的值时激活该语句。 这将打印出语句An increasing consecutive run of 5 elements found at:然后导致 for 循环。

    while(counter == n){

           System.out.println("An increasing consecutive run of " + n + " elements found at:");

现在设置这个循环来简单地打印出成功的n行。

    for(int j = i - n; j < i; j++){
        System.out.println("Index " + j + " contains " + set[j]);
    } //End for

一旦满足所有条件,告诉代码停止运行。

       return;

只需关闭 while 和 for 循环,程序就完成了。

        } //End while

    } //End for

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM