PAT_乙级_1018. 锤子剪刀布 (20)

本文详细介绍了如何通过编程实现对‘锤子剪刀布’游戏的交锋记录进行统计分析,包括双方胜、平、负次数及各手势获胜次数的最大化策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接:点击打开链接

 

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

现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。

输入格式:

输入第1行给出正整数N(<=105),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C代表“锤子”、J代表“剪刀”、B代表“布”,第1个字母代表甲方,第2个代表乙方,中间有1个空格。

输出格式:

输出第1、2行分别给出甲、乙的胜、平、负次数,数字间以1个空格分隔。第3行给出两个字母,分别代表甲、乙获胜次数最多的手势,中间有1个空格。如果解不唯一,则输出按字母序最小的解。

输入样例:

10
C J
J B
C B
B B
B C
C C
C B
J B
B C
J J

输出样例:

5 3 2
2 3 5
B B
我的C++程序:
 
#include <iostream>
using namespace std;
int main(int argc, char** argv)
{	
	int n;
	int i=0;
	char j,y;//甲的手势,乙的手势
	int jwin=0,jloss=0;//jwin甲赢的次数,jloss输得次数 
	int ywin=0,yloss=0;//ywin乙赢的次数,yloss乙输得次数 
	int flat=0;//平局对双方次数是一样的 
	int jc=0,jb=0,jj=0;//jc标志是甲用锤子赢的次数,jb标志是甲用布赢的次数,jj标志是甲用剪刀赢的次数 
	int yc=0,yb=0,yj=0;
	cin>>n;
	for(;i<n;i++)
	{
		//剪刀J,锤子C,布B 
		cin>>j>>y;
		if(j=='J'&&y=='C')
		{
			ywin++;
			yc++;
		}
		if(j=='C'&&y=='J')
		{
			jwin++;
			jc++;
		}
		if(j=='J'&&y=='B')
		{
			jwin++;
			jj++;
		}
		if(j=='B'&&y=='J')
		{
			ywin++;
			yj++;
		}
		if(j=='C'&&y=='B')
		{
			ywin++;
			yb++;
		}
		if(j=='B'&&y=='C')
		{
			jwin++;
			jb++;
		}
		if(j==y)
		{
			flat++;
		}
	}
	jloss=ywin;//甲输的次数等于乙赢得次数 
	yloss=jwin;//乙输的次数等于甲赢得次数 
	cout<<jwin<<' '<<flat<<' '<<jloss<<endl;
	cout<<ywin<<' '<<flat<<' '<<yloss<<endl;
	if(jb>=jc&&jb>=jj)//如果甲用布赢得次数最多,输出B,当布、锤子、剪刀赢得次数一样多时优先输出B布 
	{
		cout<<"B ";
	}
	else if(jc>=jj)//如果甲用锤子赢得次数最多,输出C锤子,当锤子、剪刀赢得次数一样多时优先输出C锤子 
	{
		cout<<"C ";
	}
	else// 如果甲用剪刀赢得次数最多,输出剪刀标志J 
	{
		cout<<"J ";
	}
	
	if(yb>=yc&&yb>=yj)
	{
		cout<<"B";
	}
	else if(yc>=yj)
	{
		cout<<"C";
	}
	else
	{
		cout<<"J";
	}
	//cout<<jmax<<' '<<ymax;
	return 0;
}

select distinct a.EMPI_ID, a.PATIENT_NO, a.MR_NO, a.PAT_NAME, a.PAT_SEX, a.PAT_AGE, a.PAT_PHONE_NO, b.DIAG_RESULT, a.ADMIT_DATE, a.DISCHARGE_DEPT_NAME, a.ATTEND_DR from BASIC_INFORMATION a join PA_DIAG b on a.MZZY_SERIES_NO=b.MZZY_SERIES_NO join EXAM_DESC_RESULT_CODE c on a.MZZY_SERIES_NO=c.MZZY_SERIES_NO join DRUG_INFO d on a.MZZY_SERIES_NO=d.MZZY_SERIES_NO join EMR_CONTENT e on a.MZZY_SERIES_NO=e.MZZY_SERIES_NO JOIN TEST_INFO A17 ON a.MZZY_SERIES_NO = A17.MZZY_SERIES_NO where a.PAT_AGE>=&#39;18&#39; and (to_char(a.ADMIT_DATE,&#39;YYYY-MM-DD&#39;) >= &#39;2021-01-01&#39;) AND (b.DIAG_RESULT LIKE &#39;%鼻咽癌%&#39; or b.DIAG_RESULT LIKE &#39;%鼻咽恶性肿瘤%&#39; or b.DIAG_CODE LIKE &#39;%C11/900%&#39;) and d.DRUG_NAME not in (select DRUG_NAME FROM DRUG_INFO WHERE DRUG_NAME like &#39;卡培他滨&#39;) and b.DIAG_RESULT NOT IN (SELECT DIAG_RESULT FROM PA_DIAG WHERE DIAG_RESULT LIKE &#39;%HIV阳性%&#39;) and b.DIAG_RESULT NOT IN (SELECT DIAG_RESULT FROM PA_DIAG WHERE DIAG_RESULT LIKE &#39;%充血性心力衰竭%&#39;) AND to_char(( A17.TEST_DETAIL_ITEM_NAME = &#39;中性粒细胞&#39; AND A17.TEST_RESULT >= 1.5 ) OR ( A17.TEST_DETAIL_ITEM_NAME = &#39;血小板&#39; AND A17.TEST_RESULT >= 100 ) OR ( A17.TEST_DETAIL_ITEM_NAME = &#39;血红蛋白&#39; AND A17.TEST_RESULT >= 9 ) OR ( A17.TEST_DETAIL_ITEM_NAME = &#39;丙氨酸氨基转移酶&#39; AND A17.TEST_RESULT <= 2.5 ) OR ( A17.TEST_DETAIL_ITEM_NAME = &#39;天门冬氨酸氨基转移酶&#39; AND A17.TEST_RESULT <= 2.5 ) OR ( A17.TEST_DETAIL_ITEM_NAME = &#39;肌酐清除率&#39; AND A17.TEST_RESULT > 51 ) OR ( A17.TEST_DETAIL_ITEM_NAME = &#39;肌酐&#39; AND A17.TEST_RESULT <=1.5 ) OR ( A17.TEST_DETAIL_ITEM_NAME = &#39;凝血酶原时&#39; AND A17.TEST_RESULT <= 1.5 ))语句哪里有问题
06-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值