PAT 1018 锤子剪刀布 (20 分)

游戏 游戏 1250 人阅读 | 0 人回复

<
标题问题形貌:

各人该当城市玩“锤子铰剪布”的游戏:两人同时给脱手势,输赢划定规矩如图所示:
213625de1sebiwwo0tthpq.jpg

现给出两人的比武纪录,请统计单方的胜、仄、背次数,并且给出单方别离出甚么脚势的胜算最年夜。
输进格局:

输进第 1 止给出正整数 N(≤105 ),即单方比武的次数。随后 N 止,每止给出一次比武的疑息,即甲、乙单方同时给出的的脚势。C 代表“锤子”、J 代表“铰剪”、B 代表“布”,第 1 个字母代表甲圆,第 2 个代表乙圆,中心有 1 个空格。
输特别式:

输出第 1、2 止别离给出甲、乙的胜、仄、背次数,数字间以 1 个空格分开。第 3 止给出两个字母,别离代表甲、乙得胜次数最多的脚势,中心有 1 个空格。假如解不惟一,则输出按字母序最小的解。
输进样例:

  1. 10
  2. C J
  3. J B
  4. C B
  5. B B
  6. B C
  7. C C
  8. C B
  9. J B
  10. B C
  11. J J
复造代码
输出样例:

  1. 5 3 2
  2. 2 3 5
  3. B B
复造代码
解题思绪:

思绪其实不庞大,随着题意一步一步去便可,有测试面过没有来便从头到尾缕一缕,多检查几遍。
题解:

C++完成:

[code]#include #include using namespace std;struct SS{        char s; //纪录锤子铰剪布的形态         int cnt; //纪录该形态对应的赢的次数 };bool compare(const struct SS& t1, const struct SS& t2){        if (t1.cnt != t2.cnt)                return t1.cnt </span t2span class="token punctuation"./spancntspan class="token punctuation";/span span class="token comment"//假如博得次数差别,那末便按博得次数降序布列 /span        span class="token keyword"else/span                span class="token keyword"return/span t1span class="token punctuation"./spans span class="token operator"> t2.s; //假如博得次数不异,那末便按锤子铰剪布的字典序降序布列 }int main(){        struct SS wa[3] = { {&#39;C&#39;,0},{&#39;J&#39;,0},{&#39;B&#39;,0} }; //wa[0].cnt甲锤子赢,wa[1].cnt甲铰剪赢, wa[2].cnt甲布赢        struct SS wb[3] = { {&#39;C&#39;,0},{&#39;J&#39;,0},{&#39;B&#39;,0} }; //wb[0].cnt乙锤子赢,wb[1].cnt乙铰剪赢, wb[2].cnt乙布赢        int N = 0, w = 0;        cin >> N;        char* a = new char[N];        char* b = new char[N];        for (int i = 0; i </span Nspan class="token punctuation";/span ispan class="token operator"++/spanspan class="token punctuation")/span        span class="token punctuation"{/span                cin span class="token operator">> a >> b;                if (a == b)                        w++;                else if (a == &#39;C&#39; && b == &#39;J&#39;)                        wa[0].cnt++; //甲锤子赢                else if (a == &#39;C&#39; && b == &#39;B&#39;)                        wb[2].cnt++; //乙布赢                else if (a == &#39;J&#39; && b == &#39;C&#39;)                        wb[0].cnt++; //乙锤子赢                else if (a == &#39;J&#39; && b == &#39;B&#39;)                        wa[1].cnt++; //甲铰剪赢                else if (a == &#39;B&#39; && b == &#39;C&#39;)                        wa[2].cnt++; //甲布赢                else if (a == &#39;B&#39; && b == &#39;J&#39;)                        wb[1].cnt++; //乙铰剪赢        }        cout <span class="token operator">
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,按照目前互联网开放的原则,我们将在不通知作者的情况下,转载文章;如果原文明确注明“禁止转载”,我们一定不会转载。如果我们转载的文章不符合作者的版权声明或者作者不想让我们转载您的文章的话,请您发送邮箱:Cdnjson@163.com提供相关证明,我们将积极配合您!
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并自负版权等法律责任。
回复 关闭延时

使用道具 举报

 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则