1 Star 0 Fork 0

catyMap/AlgorithmNote

Create your Gitee Account
Explore and code with more than 13.5 million developers,Free private repositories !:)
Sign up
文件
Clone or Download
sumGame.go 1.43 KB
Copy Edit Raw Blame History
catyMap authored 2021-07-22 22:16 +08:00 . 更新周赛题库
package main
import (
"fmt"
"strings"
)
func sumGame(num string) bool {
// 思路:Alice操纵一边尽可能大或尽可能小,使得Bob极难操作即可
numbytes1 := []byte(num)
numbytes2 := []byte(num)
flag1, flag2 := true, true
isAlice := true
n := len(numbytes1)
if !strings.Contains(num, "?") {
return judge([]byte(num)) != 0
}
// 1.Alice尽力把左边搞大,右边搞小
// 2.Bob 尽力把右边搞大,左边搞小
for i := 0; i < n; i++ {
if numbytes1[i] == '?' {
if i < n/2 {
if isAlice {
numbytes1[i] = '9'
isAlice = false
} else {
numbytes1[i] = '0'
isAlice = true
}
} else {
if isAlice {
numbytes1[i] = '0'
isAlice = false
} else {
numbytes1[i] = '9'
isAlice = true
}
}
}
}
flag1 = judge(numbytes1) > 0
isAlice = true
for i := 0; i < n; i++ {
if numbytes2[i] == '?' {
if i < n/2 {
if isAlice {
numbytes2[i] = '0'
isAlice = false
} else {
numbytes2[i] = '9'
isAlice = true
}
} else {
if isAlice {
numbytes2[i] = '9'
isAlice = false
} else {
numbytes2[i] = '0'
isAlice = true
}
}
}
}
flag2 = judge(numbytes2) < 0
return flag1 || flag2
}
func judge(bytes []byte) int {
n := len(bytes)
sum1, sum2 := 0, 0
for i := 0; i < n/2; i++ {
sum1 += int(bytes[i])
sum2 += int(bytes[n-i-1])
}
return sum1 - sum2
}
func main() {
fmt.Println(sumGame("?3295???"))
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/dogemap/algorithm-note.git
git@gitee.com:dogemap/algorithm-note.git
dogemap
algorithm-note
AlgorithmNote
dc486f96f6c1

Search