题目大意:其实题目的意思很明了,就是每个等级得到几颗星可以升级,(类似游戏的经验值升级),需要注意的点就是
①16——25级的时候,如果连续胜利三次以上就可以得到两颗星;
②如果这一次失败,只有1——19级的时候才会失去一颗星,(等级低的是不会掉星的……莫名感觉到歧视嘤嘤)
③20级并且当它没有星的时候,也不会掉星……(一开始就是忘了这个WA了一次)
题目链接:戳我戳我
#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
int main(void)
{
int ranks;
int current;
string str;
string res="";
while(cin>>str)
{
ranks=25;
current=0;
int tol=0;
int len=str.size();
for(int i=0;i<len;i++)
{
if(str[i]=='W')
{
tol++;//这个是用来统计连续次数的
if(ranks>=6&&ranks<=25&&tol>=3)
current+=2;
else
current++;
if(ranks>=21&&ranks<=25)
{
if(current==3)
{
ranks--;
current=1;
}
else if(current==4)
{
ranks--;
current=2;
}
}
else if(ranks>=16&&ranks<=20)
{
if(current==4)
{
ranks--;
current=1;
}
else if(current==5)
{
ranks--;
current=2;
}
}
else if(ranks>=11&&ranks<=15)
{
if(current==5)
{
ranks--;
current=1;
}
else if(current==6)
{
ranks--;
current=2;
}
}
else if(ranks>1&&ranks<=10)
{
if(current==6)
{
ranks--;
current=1;
}
else if(current==7)
{
ranks--;
current=2;
}
}
else if(ranks==1)
{
if(current>=6)
{
res="Legend";
// break;
}
}
}
else if(str[i]=='L')
{
//printf("%d====\n",ranks);
tol=0;
if((ranks>=1&&ranks<20)||(ranks==20&¤t>0))
{
current--;
if(current==-1)
{
ranks++;
if(ranks>=16&&ranks<=20)
current=2;
else if(ranks>=11&&ranks<=15)
current=3;
else if(ranks>=1&&ranks<=10)
current=4;
}
}
}
}
if(res=="Legend")
cout<<res;
else
printf("%d\n",ranks);
}
return 0;
}
呼呼