想知道为什么这个程序在测试点3的答案一直是错误

Kytorio(曾祯) 发表于 1年前 · 关联问题 一鸣师姐与阿枯城

#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。

Kytorio(曾祯) 发表于 1年前

应该不是这个问题?这里初赋值为1也是保证了n个元素,而且即使在改为初赋值为0时答案也是错误。在第三个测试点时输出了与答案相反的结果,我也不知道是哪一段出了问题