2012年11月20日 星期二

最大連續元素和

給一串數列,有n 個整數,請寫一個程式,找出這個數列中,連續元素相加的最大值。 

例如:1, 2, -3, 4, 5 這一數列,最大連續元素和是4+5=9。

輸入說明:

第一行的數字,代表有幾組測試資料,第二行開始的每一行即為一筆測試資料。每一筆

測試資料是不定個數的整數數列,以空格分開數字。數字的範圍為[-10000, 10000]間的整數。

輸出說明:

對每一筆測試資料,以一行輸出最大連續數值和。

輸入範例:

2

1 2 3 4 5

10 -5 7 6 -1 -3

輸出範例:

15

18

5 則留言:

  1. Private Sub Form_Load()
    Me.Hide
    Open App.Path & "\in.txt" For Input As #1
    Open App.Path & "\out.txt" For Output As #2
    Input #1, mycount
    For ai = 1 To mycount
    Line Input #1, temp
    strr = Split(temp, " ")
    For bi = 0 To UBound(strr)
    tempp = 0
    For i = bi To UBound(strr)
    tempp = tempp + Val(strr(i))
    If tempp > maxx Then maxx = tempp
    Next
    Next
    Print #2, maxx: maxx = 0
    Next
    Close #2
    Close #1
    End
    End Sub

    回覆刪除
  2. 例如:1, 2, -3, 4, 5 這一數列,最大連續元素和是4+5=9。

    '---
    輸入範例:

    2

    1 2 3 4 5 >> 1+2+3+4+5 = 15

    10 -5 7 6 -1 -3 >> 6 + 7 =18?

    輸出範例:

    15

    18

    回覆刪除
  3. 10 -5 7 6 -1 -3 >> 10 + -5 + 7 + 6 =18
    是要加起來最大,並不是不找負數。

    回覆刪除
    回覆
    1. 喔喔~~連續元素唷...
      會錯意,以為是 連續數字....

      刪除
  4. Dim max As Integer
    Private Sub Form_Load()
    Me.Hide
    Open App.Path & "\in.txt" For Input As #1
    Open App.Path & "\out.txt" For Output As #2
    Input #1, n
    For t = 1 To Val(n)
    Line Input #1, x: max = 0
    a = Split(x)
    For i = 0 To UBound(a)
    ans = Val(a(i))
    For j = i + 1 To UBound(a)
    ans = ans + Val(a(j))
    If ans > max Then max = ans
    Next j
    Next i
    Print #2, max
    Next t
    Close #2
    Close #1
    End
    End Sub

    回覆刪除