本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。
欢迎大家订阅我的专栏:算法题解:C++与Python实现!
附上汇总贴:算法竞赛备考冲刺必刷题(C++) | 汇总
【题目来源】
洛谷:B2112 石头剪子布 - 洛谷
【题目描述】
石头剪子布,是一种猜拳游戏。起源于中国,然后传到日本、朝鲜等地,随着亚欧贸易的不断发展它传到了欧洲,到了近现代逐渐风靡世界。简单明了的规则,使得石头剪子布没有任何规则漏洞可钻,单次玩法比拼运气,多回合玩法比拼心理博弈,使得石头剪子布这个古老的游戏同时用于“意外”与“技术”两种特性,深受世界人民喜爱。
游戏规则:石头打剪刀,布包石头,剪刀剪布。
现在,需要你写一个程序来判断石头剪子布游戏的结果。
【输入】
第一行是一个整数N NN,表示一共进行了N NN次游戏。1 ≤ N ≤ 100 1 \le N \le 1001≤N≤100。
接下来N NN行的每一行包括两个字符串,表示游戏参与者 Player1,Player2 的选择(石头、剪子或者是布):
S1,S2
字符串之间以空格隔开 S1 S2 只可能取值在Rock,Scissors,Paper(大小写敏感)中。
【输出】
输出包括N NN行,每一行对应一个胜利者(Player1 或者 Player2),或者游戏出现平局,则输出Tie。
【输入样例】
3 Rock Scissors Paper Paper Rock Paper【输出样例】
Player1 Tie Player2【算法标签】
#入门# #语法基础#
【代码详解】
#include<bits/stdc++.h>usingnamespacestd;intmain(){chars1[10],s2[10];// 两个字符数组,用于存储玩家的选择intn;// 游戏轮数cin>>n;// 输入游戏轮数// 进行n轮游戏for(inti=0;i<n;++i)// 循环n次{cin>>s1>>s2;// 输入玩家1和玩家2的选择// 判断游戏结果if(strcmp(s1,s2)==0)// 如果两个选择相同{cout<<"Tie"<<endl;// 输出平局}else{// 玩家1选择石头的情况if(strcmp(s1,"Rock")==0){if(strcmp(s2,"Scissors")==0)// 石头 vs 剪刀{cout<<"Player1"<<endl;// 玩家1获胜}else// 石头 vs 布{cout<<"Player2"<<endl;// 玩家2获胜}}// 玩家1选择剪刀的情况if(strcmp(s1,"Scissors")==0){if(strcmp(s2,"Paper")==0)// 剪刀 vs 布{cout<<"Player1"<<endl;// 玩家1获胜}else// 剪刀 vs 石头{cout<<"Player2"<<endl;// 玩家2获胜}}// 玩家1选择布的情况if(strcmp(s1,"Paper")==0){if(strcmp(s2,"Rock")==0)// 布 vs 石头{cout<<"Player1"<<endl;// 玩家1获胜}else// 布 vs 剪刀{cout<<"Player2"<<endl;// 玩家2获胜}}}}return0;// 程序正常结束}【运行结果】
3 Rock Scissors Player1 Paper Paper Tie Rock Paper Player2