Fetch the repository succeeded.
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???"))
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。