當前位置:網站首頁>【題解】【PTA團體程序設計天梯賽】L1-019 誰先倒 (15 分) Go語言 Golang

【題解】【PTA團體程序設計天梯賽】L1-019 誰先倒 (15 分) Go語言 Golang

2021-08-20 00:47:19 小生凡一

L1-019 誰先倒 (15 分) Go語言|Golang

劃拳是古老中國酒文化的一個有趣的組成部分。酒桌上兩人劃拳的方法為:每人口中喊出一個數字,同時用手比劃出一個數字。如果誰比劃出的數字正好等於兩人喊出的數字之和,誰就輸了,輸家罰一杯酒。兩人同贏或兩人同輸則繼續下一輪,直到唯一的贏家出現。

下面給出甲、乙兩人的酒量(最多能喝多少杯不倒)和劃拳記錄,請你判斷兩個人誰先倒。

輸入格式:

輸入第一行先後給出甲、乙兩人的酒量(不超過100的非負整數),以空格分隔。下一行給出一個正整數N(≤100),隨後N行,每行給出一輪劃拳的記錄,格式為:

甲喊 甲劃 乙喊 乙劃

其中是喊出的數字,是劃出的數字,均為不超過100的正整數(兩只手一起劃)。

輸出格式:

在第一行中輸出先倒下的那個人:A代錶甲,B代錶乙。第二行中輸出沒倒的那個人喝了多少杯。題目保證有一個人倒下。注意程序處理到有人倒下就終止,後面的數據不必處理。

輸入樣例1:

1 1
6
8 10 9 12
5 10 5 10
3 8 5 12
12 18 1 13
4 16 12 15
15 1 1 16

結尾無空行

輸出樣例1:

A
1

結尾無空行

思路:

理解題意很重要,直接照著題目寫出來就行,就是先是輸出,然後再一遍輸入一遍進行判斷,一旦發現有人醉倒了就馬上退出,記錄下另外一比特喝了多少酒。可以看注釋啦~

代碼如下:

package main

import "fmt"

func main() {
    
	var aJiu,bJiu,num int
	_,_=fmt.Scan(&aJiu,&bJiu) //輸入兩人的酒量
	_,_=fmt.Scan(&num)  //輸入回合數
	aJiuTmp := aJiu  // 存放這兩人的酒量,方便後續减去剩餘的酒量,就是合理多少酒了
	bJiuTmp := bJiu
	for i:=0;i<num;i++{
    
		var aHan,aHua,bHan,bHua int
		_,_=fmt.Scan(&aHan,&aHua,&bHan,&bHua) 	  // 輸入兩人的劃和喊
		if aHua==aHan+bHan &&  bHua!=aHan+bHan {
     // 如果A劃的數字是兩者之和並且B的不是
			aJiu--  							 //A就喝酒,酒量就减少1
			if aJiu < 0{
     				// 一旦發現A的酒量<0了,就直接退出了
				fmt.Printf("A\n%d",bJiuTmp-bJiu) //打印出此時B的酒量
				break
			}
		}else if bHua==aHan+bHan && aHua!=aHan+bHan {
     // 如果B劃的數字是兩者之和並且A的不是
			bJiu--			 //B就喝酒,酒量就减少1
			if bJiu < 0  {
    		// 一旦發現B的酒量<0了,就直接退出了
				fmt.Printf("B\n%d", aJiuTmp-aJiu)  //打印出此時A的酒量
				break
			}
		} else {
    
			continue
		}
	}
}

版權聲明
本文為[小生凡一]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2021/08/20210820004719169Q.html

隨機推薦