zoukankan      html  css  js  c++  java
  • 软件工程第二周课上练习

      设计思想:贪心算法。键盘输入定义数组的长度,for循环输入数组的值,定义两个sum,都赋予初值,for循环—如果初值1小于0,赋予初值1=0,初值1=初值1+数组第二个值,if判断初值1与初值2的大小,以此类推,最后输出初值2.

      出现的问题,一开始两个初值都赋予的是0,所以当第一个数字是负数的时候会影响后边相加,使结果变小。

      解决方案:将初值=数组第一个数的值。

      源代码:

     1 package 数组;
     2 import java.util.Scanner;
     3 public class Shuzu2 {
     4 
     5     public static void main(String[] args){
     6         int number,maxsum,maxstart;
     7         int i;
     8         Scanner in = new Scanner(System.in);
     9         System.out.println("请输入数组的长度:");
    10         number=in.nextInt();
    11         int array[]=new int[number];
    12         System.out.println("请输入数组的值:");
    13         for(i=0;i<number;i++)
    14         {
    15             array[i]=in.nextInt();
    16         }
    17         maxsum=array[0];
    18         maxstart=array[0];
    19         for(i=1;i<number;i++)
    20         {
    21             if(maxstart<0)
    22             {
    23                 maxstart=0;
    24             }
    25             maxstart+=array[i];
    26             if(maxstart>maxsum)
    27                 maxsum=maxstart;
    28             
    29         }
    30         System.out.println(maxsum);
    31         in.close();
    32     }
    33 }

       运行结果截图:

       总结:整体其他的比较基础,主要的运算部分我用的是贪心算法。

  • 相关阅读:
    归并排序——计算逆序数
    二分图 (匈牙利算法)
    拓扑排序
    读入外挂——秒杀scanf
    最小生成树(kruskal+并查集)
    最短路算法(dijkstra,bellman_ford,floyd)
    【Python】【Module】re
    【Python】【Module】os
    【Python】【Module】random
    【Python】【Module】time
  • 原文地址:https://www.cnblogs.com/0518liu/p/10508201.html
Copyright © 2011-2022 走看看