PTA团体程序设计天梯赛:L1-019 谁先倒

题目描述:

划拳是古老中国酒文化的一个有趣的组成部分。酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字。如果谁比划出的数字正好等于两人喊出的数字之和,谁就输了,输家罚一杯酒。两人同赢或两人同输则继续下一轮,直到唯一的赢家出现。

下面给出甲、乙两人的酒量(最多能喝多少杯不倒)和划拳记录,请你判断两个人谁先倒。

输入格式:

输入第一行先后给出甲、乙两人的酒量(不超过100的非负整数),以空格分隔。下一行给出一个正整数N(≤100),随后N行,每行给出一轮划拳的记录,格式为:

甲喊 甲划 乙喊 乙划

其中是喊出的数字,是划出的数字,均为不超过100的正整数(两只手一起划)。

输出格式:

在第一行中输出先倒下的那个人:A代表甲,B代表乙。第二行中输出没倒的那个人喝了多少杯。题目保证有一个人倒下。注意程序处理到有人倒下就终止,后面的数据不必处理。

输入样例:

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

输出样例:

A
1

解题思路:这个题目属于简单题目,主要侧重于考察if条件判断和循环的使用。可以先将甲乙两人喊的数字和划拳的数据存储到数组中,然后将甲乙喊的数字的相应次序的数字之和加起来存到一个数组中,然后比较每个人划拳的数字和两个人喊的数字的和。如果相等则其输喝一杯酒,将其酒量减一(先将原数据复制),然后判断,直到其中一个人的酒量小于0,则说明他输了。然后break调出循环,否则continue继续循环。下面是我写的代码:

#include<iostream>
#include<stdio.h>
using namespace std;

int main(){
	int count_a,count_b,n;
	int a_call[100],b_call[100],a_sweep[100],b_sweep[100];
	int count,call[100];
	cin>>count_a>>count_b;
	int count_a1 = count_a,count_b1 = count_b;
	cin>>n;
	//cout<<count_a1<<" "<<count_b1<<endl;
	for(int i=0;i<n;i++){
		cin>>a_call[i]>>a_sweep[i]>>b_call[i]>>b_sweep[i];
		call[i] = a_call[i]+b_call[i];
		//cout<<a_sweep[i]<<" "<<b_sweep[i]<<" "<<call[i]<<endl;
	}
	
	for(int i=0;i<n;i++){
		//cout<<i;
		//乙嬴 
		if(a_sweep[i]==call[i] && b_sweep[i]!=call[i]){
			count_a1--;
			
		}
		//甲嬴 
		else if(b_sweep[i]==call[i] && a_sweep[i]!=call[i]){
			count_b1--;
			
		}
		else{
			continue;
		}
		if(count_a1<0){
			printf("A\n");
			printf("%d",count_b - count_b1);
			break;
		}
		if(count_b1<0){
			printf("B\n");
			printf("%d",count_a - count_a1);
			break;
		}
		
	}
		
	return 0;
}
发布了61 篇原创文章 · 获赞 35 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_41575507/article/details/97561154