题意:
给出总的输赢情况和排位上分机制,问最终的等级是多少。(炉石没玩过,但大都差不多)
思路:
模拟即可
#include <bits/stdc++.h>
using namespace std;
string s;
int Rank ,Star,num;//段位,当前段位的获星数,连胜数
void up(int v)
{
Star+=v;
if(Rank>=21 && Rank<=25 && Star>2) Rank--,Star-=2;//满星升级
else if(Rank>=16 && Rank<=20 && Star>3) Rank--,Star-=3;
else if(Rank>=11 && Rank<=15 && Star>4) Rank--,Star-=4;
else if(Rank>=1 && Rank<=10 && Star>5) Rank--,Star-=5;
}
void down()
{
if(Rank>20) return;//不掉星
if(Star)
{
Star--;
return;
}
//以下处理掉段情况
if(Rank<20)
{
Rank++;
if(Rank>=16 && Rank<=20) Star = 2;
else if(Rank>=11 && Rank<=15) Star = 3;
else if(Rank>=1 && Rank<=10) Star = 4;
}
}
int main()
{
while(cin>>s)
{
Rank = 25 ,Star = 0;
num = 0;
for(int i=0;i<s.size();i++)
{
if(Rank == 0) break;//达到lengend直接停
if(s[i]=='L')down(),num = 0;
else if(s[i]=='W')
{
num++;//连胜数
if(Rank>=6&&num>=3) up(2);
else up(1);
}
}
if(Rank) printf("%d\n",Rank);
else printf("Legend\n");
}
return 0;
}