概述
⭐每日算法题解系列文章旨在精选重点与易错的算法题,总结常见的算法思路与可能出现的错误,与笔者另一系列文章有所区别,并不是以知识点的形式提升算法能力,而是以实战习题的形式理解算法,使用算法。
????本文已收录于算法刷题系列专栏: 每日算法题解 欢迎订阅,持续更新。
文章目录
- 20.循环相克令
- 输入格式
- 输出格式
- 数据范围
- 输入样例
- 输出样例
- 思路
- 21.字符串插入
- 输入格式
- 输出格式
- 输入样例:
- 输出样例:
- 思路:
- 22.只出现一次的字符
- 输入格式
- 输出格式
- 输入样例:
- 输出样例:
- 思路:
20.循环相克令
循环相克令是一个两人玩的小游戏。
令词为“猎人、狗熊、枪”,两人同时说出令词,同时做出一个动作——猎人的动作是双手叉腰;狗熊的动作是双手搭在胸前;枪的动作是双手举起呈手枪状。
双方以此动作判定输赢,猎人赢枪、枪赢狗熊、狗熊赢猎人,动作相同则视为平局。
现在给定你一系列的动作组合,请你判断游戏结果。
输入格式
第一行包含整数 T,表示共有 T 组测试数据。
接下来 T 行,每行包含两个字符串,表示一局游戏中两人做出的动作,字符串为 Hunter
, Bear
, Gun
中的一个,这三个单词分别代表猎人,狗熊和枪。
输出格式
如果第一个玩家赢了,则输出 Player1
。
如果第二个玩家赢了,则输出 Player2
。
如果平局,则输出 Tie
。
数据范围
1≤N≤100
输入样例
3
Hunter Gun
Bear Bear
Hunter Bear
输出样例
Player1
Tie
Player2
思路
这题可以采用转义的方式进行比较,分别令三者为0,1,2。寻找其中的规律即可,通常这种带有循环的关系都考虑取模的方法。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int turn;
cin>>turn;
while(turn --)
{
string a,b;
cin >> a >> b;
int x,y;
if(a == "Hunter")x = 0;
else if(a == "Bear")x = 1;
else x = 2;
if(b == "Hunter")y= 0;
else if(b == "Bear")y = 1;
else y = 2;
if(x == y)puts("Tie");
else if(x == (y+1)%3) puts("Player1");
else puts("Player2");
}
return 0;
}
21.字符串插入
有两个不包含空白字符的字符串 strstr 和 substrsubstr,strstr 的字符个数不超过 1010,substrsubstr 的字符个数为 33。(字符个数不包括字符串结尾处的