石头剪子布(字符串解法 C++)

简介: 石头剪子布(字符串解法 C++)

石头剪子布

题目描述

石头剪子布,是一种猜拳游戏。起源于中国,然后传到日本、朝鲜等地,随着亚欧贸易的不断发展它传到了欧洲,到了近现代逐渐风靡世界。简单明了的规则,使得石头剪子布没有任何规则漏洞可钻,单次玩法比拼运气,多回合玩法比拼心理博弈,使得石头剪子布这个古老的游戏同时用于“意外”与“技术”两种特性,深受世界人民喜爱。

游戏规则:石头打剪刀,布包石头,剪刀剪布。

现在,需要你写一个程序来判断石头剪子布游戏的结果。

输入格式

第一行是一个整数 N N N,表示一共进行了 N N N 次游戏。 1 ≤ N ≤ 100 1 \le N \le 100 1N100

接下来 N N N 行的每一行包括两个字符串,表示游戏参与者 Player1,Player2 的选择(石头、剪子或者是布):

S1,S2

字符串之间以空格隔开 S1 S2 只可能取值在 Rock,Scissors,Paper (大小写敏感)中。

输出格式

输出包括 N N N 行,每一行对应一个胜利者(Player1 或者 Player2),或者游戏出现平局,则输出 Tie

样例 #1

样例输入 #1

3
Rock Scissors
Paper Paper
Rock Paper

样例输出 #1

Player1
Tie
Player2

代码如下

#include <bits/stdc++.h>
using namespace std;
void Solved(string s1, string s2) //定义一个函数用来解决问题
{
  string s = "RSP"; //取石头剪刀布的字母手写
  int x1, x2; //定义两个整型
  for(int i = 0; i < 3; i++)  
  {
      if(s1[0] == s[i]) x1 = i; //当s1第一个字符等于字符串的其中一个时,令x1等于该位置的i
      if(s2[0] == s[i]) x2 = i; //与上面的意思相同    
  }
  if(x1 == x2)  cout << "Tie\n";  //如果两者相差的数相同,则为平局
  if(abs(x1 - x2) == 1){  //如果数值相差一位
  if(x1 < x2) cout << "Player1\n";  //当x1 < x2的时候,输出Player1
  else  cout << "Player2\n";  //否则,x1 > x2,输出Player2
  }
  else  //当abs(x1 - x2) ==2时
  {
    if(x1 < x2) //其中此时情况是,s1 = Rock, s2  = Paper
      cout << "Player2\n";
      else cout << "Player1\n";
  }
}
int main()
{
  int T;
  while(T--)
  {
    string s1,s2;
    cin >> s1 >> s2;
    Sloved(s1, s2);
  }
return 0;
}


相关文章
|
3月前
|
搜索推荐 编译器 C语言
【C++核心】特殊的元素集合-数组与字符串详解
这篇文章详细讲解了C++中数组和字符串的基本概念、操作和应用,包括一维数组、二维数组的定义和使用,以及C风格字符串和C++字符串类的对比。
105 4
|
2月前
|
缓存 网络协议 API
C/C++ StringToAddress(字符串转 boost::asio::ip::address)
通过上述步骤和示例代码,你可以轻松地在C++项目中实现从字符串到 `boost::asio::ip::address`的转换,从而充分利用Boost.Asio库进行网络编程。
89 0
|
2月前
|
编译器 C语言 C++
C/C++数字与字符串互相转换
C/C++数字与字符串互相转换
|
3月前
|
C++
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
|
3月前
|
存储 C++
C++(五)String 字符串类
本文档详细介绍了C++中的`string`类,包括定义、初始化、字符串比较及数值与字符串之间的转换方法。`string`类简化了字符串处理,提供了丰富的功能如字符串查找、比较、拼接和替换等。文档通过示例代码展示了如何使用这些功能,并介绍了如何将数值转换为字符串以及反之亦然的方法。此外,还展示了如何使用`string`数组存储和遍历多个字符串。
|
5月前
|
算法 C++
2730. 找到最长的半重复子字符串(c++,滑动窗口)
2730. 找到最长的半重复子字符串(c++,滑动窗口)
|
5月前
|
C++
567. 字符串的排列(c++)滑动窗口
567. 字符串的排列(c++)滑动窗口
|
5月前
|
编译器 C++
【C++】string类的使用④(字符串操作String operations )
这篇博客探讨了C++ STL中`std::string`的几个关键操作,如`c_str()`和`data()`,它们分别返回指向字符串的const char*指针,前者保证以&#39;\0&#39;结尾,后者不保证。`get_allocator()`返回内存分配器,通常不直接使用。`copy()`函数用于将字符串部分复制到字符数组,不添加&#39;\0&#39;。`find()`和`rfind()`用于向前和向后搜索子串或字符。`npos`是string类中的一个常量,表示找不到匹配项时的返回值。博客通过实例展示了这些函数的用法。
|
6月前
|
C++ 容器
C++字符串string容器(构造、赋值、拼接、查找、替换、比较、存取、插入、删除、子串)
C++字符串string容器(构造、赋值、拼接、查找、替换、比较、存取、插入、删除、子串)
|
6月前
|
编译器 C++
【C++进阶】深入STL之string:模拟实现走进C++字符串的世界
【C++进阶】深入STL之string:模拟实现走进C++字符串的世界
46 1