一个整形数组中最大值求和问题(3)
生活随笔
收集整理的這篇文章主要介紹了
一个整形数组中最大值求和问题(3)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
新要求:
在“一個整形數組中最大值求和問題(2)”的基礎之上,加入了新要求。
將一位數組變成環形數組。
?
首先在自己看到這道題目的時候,并沒有什么思路,然后老師一點一點的旁敲側擊,自己又在紙上動手畫了畫,最后自己實現了這個項目。值得說明的一點是,自己雖然能夠實現,但是當與同學們上臺分享時,并沒有很好的表達出自己的意思,一方面,自己的語言表達能力還很欠缺,在日后的學習生活中要有意識地去改善這一方面。另一方面,自己地邏輯思維不是很清晰,正如主任所說的那樣“這只是一個小小地項目都沒能很好的表達出自己,那上百行地大項目,更說不出來,也做不出來了。”自己地邏輯思維能力,也要逐步提高。
?
設計思想:
環形數組,則程序需要在源程序的基礎之上,加入實現最后一個數加開頭數地想法,即實現n->(n-1)的計算。
首先在原代碼基礎之上,加入變量a(用來表示數組的長度,由于數組從0開始表示,故賦初值-1),然后當數組遍歷完成一次之后,將已有的sum值與(sum+c[0])、a與數組長度n兩兩進行比較,兩個條件都滿足時,才執行,將已有的sum值接著從頭開始相加的代碼,且每執行一次,均需判斷a與數組長度的關系。一但a大于等于數組長度n,則跳出循環,此時的f為子數組和的最大值。
實驗截圖:
源代碼:
import java.util.Scanner;public class sum02 {public static void main(String[] args) {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);System.out.println("請輸入數組的長度為:");int n=sc.nextInt();int[] c = new int[n];System.out.println("請輸入"+n+"個整數");for(int i=0;i<n;i++){c[i] = (int) sc.nextLong();}int a=-1;//a值用來表示子數組的長度int f=0;//定義整形變量f,為子數組最大值int sum=0;//定義整形變量sum,為子數組求和for(int i=0;i<n;i++){sum = sum+c[i];if(sum < 0){sum=0;}if(sum > f){f = sum;}a=a+1;}//System.out.println(a);if( a<n && (f+c[0])>f) {for(int i=0;i<n;i++){sum = sum+c[i];if(sum < 0){sum=0;}if(sum > f){f = sum;}a=a+1;if(a >= n) {break;}}}if(sum == 0){for(int i=0;i<n;i++){if(i == 0){f = c[i];}if(f < c[i]){f = c[i];}}}System.out.println("該數組的子數組之和的最大值為:"+f);}}?
轉載于:https://www.cnblogs.com/Qi77/p/10596235.html
總結
以上是生活随笔為你收集整理的一个整形数组中最大值求和问题(3)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学号 20175223 《Java程序设
- 下一篇: File类 判断功能和获取功能