Open zwwhdls opened 4 years ago
题意:解 2048 游戏,判断给定数组是否能赢得游戏 思路: 一个 for 循环:
package main import ( "bufio" "fmt" "math" "os" "sort" ) func main() { input := bufio.NewReader(os.Stdin) var testCase int _, err := fmt.Fscan(input, &testCase) if err != nil { } for testCase > 0 { testCase-- var x int _, err := fmt.Fscan(input, &x) if err != nil { } s := make([]int, x) for i := 0; i < x; i++ { _, err = fmt.Fscan(input, &s[i]) if err != nil { } } result := "NO" if len(s) == 1 && s[0] == 2048 { result = "YES" } for len(s) > 1 { sort.Ints(s) //fmt.Println(s) if s[0] == 2048 { result = "YES" break } else if s[0] > 2048 { break } if s[0] == s[1] { s[0] = math.MaxInt32 s[1] = s[1] + s[1] } else { s[0] = math.MaxInt32 } } fmt.Println(result) } }
题意:下军棋,骑士走“日”,给定一个棋盘,要求将里面放满“W”和 “B” 颜色的骑士,使得战争最多; 思路:将棋盘间隔放满不同颜色的骑士即可。
package main import ( "bufio" "fmt" "os" ) func main() { input := bufio.NewReader(os.Stdin) var x int _, err := fmt.Fscan(input, &x) if err != nil { } for i := 0; i < x; i++ { for j := 0; j < x; j++ { if (i+j)%2 == 0 { fmt.Print("W") } else { fmt.Print("B") } } fmt.Print("\n") } }
题意:一个中学组织比赛,每个学生要么擅长 code,要么擅长数学,要么什么都不会;参加比赛的组由3个人组成,一个 perfect team 的组成是既包含 code 又包含数学。给定 code 、数学及什么都不会的学生数,求最多能组成多少 perfect team。
思路:三个数:擅长 code 学生数、擅长数学学生数、最多能组成team 数;三个数求最小。
package main import ( "bufio" "fmt" "os" ) func main() { input := bufio.NewReader(os.Stdin) var testCase int _, err := fmt.Fscan(input, &testCase) if err != nil { } for testCase > 0 { testCase-- var c, m, x int _, err := fmt.Fscan(input, &c, &m, &x) if err != nil { } teamNum := (c + m + x) / 3 if c < m { if c < teamNum { fmt.Println(c) } else { fmt.Println(teamNum) } } else { if m < teamNum { fmt.Println(m) } else { fmt.Println(teamNum) } } } }
A 题
题意:解 2048 游戏,判断给定数组是否能赢得游戏 思路: 一个 for 循环:
B 题
题意:下军棋,骑士走“日”,给定一个棋盘,要求将里面放满“W”和 “B” 颜色的骑士,使得战争最多; 思路:将棋盘间隔放满不同颜色的骑士即可。
C 题
题意:一个中学组织比赛,每个学生要么擅长 code,要么擅长数学,要么什么都不会;参加比赛的组由3个人组成,一个 perfect team 的组成是既包含 code 又包含数学。给定 code 、数学及什么都不会的学生数,求最多能组成多少 perfect team。
思路:三个数:擅长 code 学生数、擅长数学学生数、最多能组成team 数;三个数求最小。