#include<stdio.h>
int main()
{
int h1,ark1,k1,kh,n,i,j,hmax,count=0;
scanf("%d%d%d%d%d",&h1,&ark1,&k1,&kh,&n);
hmax=h1;
int h[n],ark[n],t[n];
for(i=1;i<=n;i++)
{
scanf("%d%d%d",&h[i],&ark[i],&t[i]);
}
for(i=1;i<=n;i++)//rand
{
for(j=1;j<=(n-i);j++)
{
if(t[j]>t[j+1])
{
a=t[j];b=h[j];c=ark[j];
t[j]=t[j+1];h[j]=h[j+1];ark[j]=ark[j+1];
t[j+1]=a;h[j+1]=b;ark[j+1]=c;
}
}
}
i=1;
j=1;
while(i!=n+1)
{
if(j>=t[i]&&j<t[i+1])//fight
{
h1-=ark[i];
h[i]-=ark1;
}
if(h1<=0)//death
{
printf("My Milk!");
break;
}
j++;//time++
if(j+k1<t[i+1]&&count==0)//hp++
{
count++;
h1+=kh;
h1=h1<hmax?h1:hmax;
}
if(j==t[i+1])//two enemy
{
if(h[i]>0)
{
printf("My Milk!");
break;
}
i++;
count=0;
}
if(h[n]<=0)//win
{
printf("Mission Complete.");
break;
}
}
return 0;
}
数组的下标是从零开始,到n-1结束。你的i应该赋初值为0,且只能到n-1。
应该不是这个问题?这里初赋值为1也是保证了n个元素,而且即使在改为初赋值为0时答案也是错误。在第三个测试点时输出了与答案相反的结果,我也不知道是哪一段出了问题