股票是一種金融商品,每天的價格由市場機制來決定,如果能夠在股價的最低點買入,然後在最高點賣出,自然可以獲利不少,可惜大部分的人都無法預測它的高點以及低點,於是常常「追高殺低」,最後落得血本無歸。
現在我們將問題轉換一下,如果給你某一支股票在一段時間內每日的漲跌幅,在不考慮額外收取手緒費以及證交稅的情況下(不懂股票交易者請忽略這一句), 你選擇從其中一天的開盤買入,並在某一天的收盤賣出(可當天賣出),這樣交易一次,最多可獲利多少錢。
現在我們將問題轉換一下,如果給你某一支股票在一段時間內每日的漲跌幅,在不考慮額外收取手緒費以及證交稅的情況下(不懂股票交易者請忽略這一句), 你選擇從其中一天的開盤買入,並在某一天的收盤賣出(可當天賣出),這樣交易一次,最多可獲利多少錢。
輸入說明:
一開始有一個正整數 N (2<=N<=100),代表總共有幾個交易日,接下來有 N 個整數則是這 N 個交易日的漲跌幅。
輸出說明:
請輸出最大的獲利是多少,如果無法獲利,則輸出 0。
範例輸入:
輸入1: 3 -1 -2 -3 輸入2: 5 2 -1 3 -5 2
範例輸出 :
輸出1: 0 輸出2: 4
"""
[動規] 最大連續元素和(Maximum Consecutive Sum)
基本定義:輸入一串長度為n的整數序列,求最大連續和的值。
輸入
第一行有一個數字n (1<=n<=100)
第二行有n個數字
輸出
一行,代表最大連續和的值
範例輸入
5
2 -1 5 -4 3
範例輸出
6
可以畫一個表格來看...
2 -1 5 -4 3
sum 2 1 6 2 5
max 2 2 6 6 6
-3 1 4 3 -1
sum -3 1 5 8 7 //sum<0時 sum歸零
max -3 3 5 8 8
等於是列出一個表,然後放連續元素和sum和最大連續元素和max
而當sum<0時 sum就歸零
這樣就可以得到最後的max了。"""
# 輸入多行資料
# get multiline input from user [duplicate]
lines = []
print("請輸入文數字 或按enter結束")
while True:
line = (input())
if line:
lines.append(int(line))
else:
break
text = '\n'.join(str(lines))
print()
print("輸入資料",lines)
list1=[]
sum1=0
for i in range (0,len(lines)):
sum1=sum1+int(lines[i])
list1.append(sum1)
print()
print("獲利是",list1)
if max(list1) <= 0:
print("獲利= 0")
else:
print("最大的獲利是",max(list1))
========= === RESTART: F:/Python_APSC/b026.py ======================
請輸入文數字 或按enter結束
2
-1
3
-5
2
輸入資料 [2, -1, 3, -5, 2]
獲利是 [2, 1, 4, -1, 1]
最大的獲利是 4
>>>
沒有留言:
張貼留言