Gym - 101550G- Game Rank (模拟)

题意:

给出总的输赢情况和排位上分机制,问最终的等级是多少。(炉石没玩过,但大都差不多)

思路:

模拟即可

#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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值