Skip to content

Latest commit

 

History

History

UVA11258

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

題目說明

將字串分割成介於0~32bit有正負的數字,使sum為最大值
字串數字皆為非負數

解題思路

32bit有正負的數字是多少XD

2147483647(INT_MAX)

怎麼找最大值?

使用DP,利用最大值堆出最大值
dp[i]表示在i後面(含i)的字符能组成的最大數

如何找在i後面的字符组成的最大數?

運用遞迴不斷地由最大值堆積最大值
而最終答案就是dp[0]

範例

str = "1234567890123456"
   dp[0] = "1" + dp[1]
or dp[0] = "12" + dp[2]
or dp[0] = "123" + dp[3]
or dp[0] = "1234" + dp[4]
or dp[0] = "12345" + dp[5]
or dp[0] = "123456" + dp[6]
            .
            .
            .
直到"12345678901"結束(因為大於2147483647,無法再往後斷點)
在以上組合找出最大值就是dp[0]的答案

至於dp[1]~dp[i]怎麼找?  
重複以上步驟就行了(遞迴)