【Go语言入门150题】 L1-044 稳赢 (15 分) Go语言 | Golang

1,110 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

本文已参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金

【题解】【PTA团体程序设计天梯赛】

L1-044 稳赢 (15 分) Go语言|Golang

大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 在这里插入图片描述

现要求你编写一个稳赢不输的程序,根据对方的出招,给出对应的赢招。但是!为了不让对方输得太惨,你需要每隔K次就让一个平局。

输入格式:

输入首先在第一行给出正整数K(≤10),即平局间隔的次数。随后每行给出对方的一次出招:ChuiZi代表“锤子”JianDao代表“剪刀”Bu代表“布”End代表输入结束,这一行不要作为出招处理。

输出格式:

对每一个输入的出招,按要求输出稳赢或平局的招式。每招占一行。

输入样例1:

2
ChuiZi
JianDao
Bu
JianDao
Bu
ChuiZi
ChuiZi
End

结尾无空行

输出样例1:

Bu
ChuiZi
Bu
ChuiZi
JianDao
ChuiZi
Bu

结尾无空行

思路:

只需要用一个列表去存好这个对应的答案就好。然后再进行输出

代码如下:

package main

import (
	"fmt"
)

func main() {
	var num int
	_,_=fmt.Scan(&num)
	count := 0
	var resultList []string
	for {
		var str string
		_,_=fmt.Scan(&str)
		if str == "End" {  // 如果是End就直接退出了
			break
		}
		if count==2 {  // 如果count==2就说明这个是个平局,直接填入一个即可
			count=-1
			resultList = append(resultList, str)
		}else{
			if str=="ChuiZi" {
				resultList = append(resultList, "Bu")
			}else if str=="JianDao"{
				resultList = append(resultList, "ChuiZi")
			}else if str=="Bu"{
				resultList = append(resultList, "JianDao")
			}
		}
		count++
	}
	for i:=0;i<len(resultList);i++ {
		if i == 0 {
			fmt.Printf("%s",resultList[i])
		}else{
			fmt.Printf("\n%s",resultList[i])
		}
	}
}