这题不算难,但是有点坑,就是要注意是大于等于还是大于,“=”要考虑清楚。
还有就是字符数组要开大一点,当自己很弱小比如生命和力量都为1,治疗为10.但是怪兽很强,生命10,力量9.
这时你要不断回血,而且还只能一回合回一点血,你要积累9回合才能打一下怪兽。
#include<iostream>
#include<map>
#include<string>
using namespace std;
int main()
{
int h1,h2,a1,a2,c1,count,i;
while(scanf("%d%d%d",&h1,&a1,&c1)==3){
count=0;i=0;//count表示回合数
cin>>h2>>a2;
string a[20005];//这个数组要开大一点
while(h2>0){
count++;
if(a1>=h2){//当一下就可以把怪兽打死时
a[i]="STRIKE";
h2-=a1;
}
else {
if(a2>=h1){//当怪兽可以一下打死自己时
a[i]="HEAL";
h1+=c1;//治疗
i++;
h1-=a2;//怪兽打自己
}
else {
a[i]="STRIKE";
h2-=a1;//打怪兽
i++;
if(h2>0)h1-=a2;//怪兽活着,打自己
}
}
}
cout<<count<<endl;
for(int j=0;j<=i;j++)
cout<<a[j]<<endl;
}
return 0;
}