zoukankan      html  css  js  c++  java
  • 课堂作业之首尾相连子数组值

    设计思路:将数组中每个元素依次作为数组的第一个数,利用取余保证数组首尾相接,查找每个数组的所有子数组,找到子数组和的最大值。

     程序源代码:

    import java.util.Scanner;
    public class java {
      public static int maxSum(int arr[]){  //定义一个函数maxSum 求数组中子数组和的最大值
             int sum = arr[0];   //sum 子数组和
             int b = 0;        
             for(int i = 0;i<arr.length;i++)
             { 
                 if(b<=0)  //子数组和小于0时,b为子数组为0时的元素的后一位
                 { b=arr[i]; } 
                 else 
                     {b+=arr[i]; } //b 子数组和
                       if(b>sum)sum=b;  //将最大子数组和赋值给sum
             } 
             return         sum; 
         } 
         public static void main(String[] args) { 
             System.out.println("请输入数组中元素个数;");
             Scanner reader=new Scanner(System.in);
             int n=reader.nextInt();
             int []array=new int[n];
             int []array1=new int[n];
             System.out.println("请输入数组:");
             for(int i=0;i<n;i++)    //输入数组
             {
              array[i]=reader.nextInt();
             }
             int sum = maxSum(array);   //调用函数
             for(int i=1;i<n;i++)       //循环n-1次,从第二个数往后依次作为数组第一个数
             {
              for(int j=0;j<n;j++)  //通过取余保证数组首尾相接
              {
               array1[j]=array[(j+i)%n];
              }
               int sum1= maxSum(array1);   //调用函数
               if(sum1>sum)      //取每个数组子数组最大值
               {
                sum=sum1;
                  }
             }
             System.out.println("最大字数组之和为:"+sum); 
         }  
    }

          程序截图:

    总结:刚开始准备把各种顺序的数组全部输出来,感觉这又比较麻烦,最后用求余来是首尾链接

    合作的过程:在完成这个作业过程中,虽然个人有不同的方法,但最后还是一同完成

    体会:两人可以互相合作,互相进步,但有时候还是会有争执的

  • 相关阅读:
    241. Different Ways to Add Parentheses java solutions
    89. Gray Code java solutions
    367. Valid Perfect Square java solutions
    46. Permutations java solutions
    116. Populating Next Right Pointers in Each Node java solutions
    153. Find Minimum in Rotated Sorted Array java solutions
    判断两颗树是否相同
    求二叉树叶子节点的个数
    求二叉树第k层的结点个数
    将二叉排序树转换成排序的双向链表
  • 原文地址:https://www.cnblogs.com/lipengpengpeng/p/5380758.html
Copyright © 2011-2022 走看看