这道题比较简单,就是输入需要处理一下
假设知道某段连续时间内股票价格,计算通过买入卖出可获得最大收益。
输入一个大小为n的数组price=(p1,p2,p3,p4...pn),pi是第i天的股票价格。
pi的格式为股票价格(非负整形)加上货币单位Y或S,其中Y代表人民币,S代表美元,这里规定1美元可以兑换7人民币
pi样例1:123Y代表123元人民币
pi样例2:123S代表123美元,可兑换861人民币
假设你可以再任何一天买入或卖出股票,也可以选择放弃交易,请计算在交易周期n天内你能获得的最大收益(以人民币计算)。
输入描述:
输入一个包含交易周期内各天股票价格的字符串,以空格分隔。不考虑输入异常情况。
输出描述:
输出一个整型数代表在交易周期 n 天内你能获得的最大收益, n 不能超过 10000。
示例1
输入:2Y 3S 4S 6Y 8S
输出:76
package main
import (
"bufio"
"fmt"
"os"
"strconv"
)
func getmoney(i int, prices []int) (money int, day int) {
temp := i
i++
for ; i < len(prices); i++ {
if prices[i] < prices[i-1] || i == len(prices)-1 {
return (prices[i-1] - prices[temp]), i - 1
}
}
return 0, temp
}
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
var _prices string
var prices []int
_prices = scanner.Text()
//fmt.Printf("%s", _prices)
start := 0
for i := 0; i < len(_prices); i++ {
if _prices[i] == 'Y' || _prices[i] == 'S' {
number, _ := strconv.Atoi(_prices[start:i])
start = i + 2
if _prices[i] == 'S' {
number = number * 7
}
//fmt.Println(number)
prices = append(prices, number)
}
}
prices = append(prices, 0)
money := 0
var sum int
//以上代码解析输入
//算法
for i := 0; i < len(prices)-1; i++ {
if prices[i] < prices[i+1] {
money, i = getmoney(i, prices)
sum += money
}
}
fmt.Println(sum)
}