发布网友 发布时间:2022-04-24 13:56
共1个回答
热心网友 时间:2023-10-15 08:48
你把问题写的太复杂的,对应这个多case输出的问题,不用一次性全部输入解决后再一次性全输出,只要对每个case处理就行了。
for(j=1;j<=n[i];j++)
{
if(m%2==1)
{
s[m]=s[m-1]+s[m-2];
m=m+1;
}
if(m%2==0)
{
s[m]=s[m-1]+s[m-2]+s[m-3];
m=m+1;
}
if((m-(1))==n[i])
{
printf("%d\n",s[m-(1)]);
}
这是你出问题的地方 。 你的有点太复杂了, 这里的m完全是多余的。
你这里的话,m会不断累加。
比如m=3.由于 m%2==1, 在这个分支里, m=m+1了,出来后,m=4,他不会回到for.. 这里,他会继续 if(m%2==0) 继续做。出来后m=5 当n[i]=3时,他还会继续循环,由于有j<=n[i]的*,不会死循环,但是m的值却是可以超出你定义的s[50]中的50,所以会有RE的报错。