c语言问题过河
构造一个updateMin函数,函数的作用是计算青蛙从X跳到l需要踩的石头数,如果结果小于当前计算的最小数curMin,则返回计算结果;如果大于或等于curMin,则返回,并递归计算最终的最小值。你可以修剪一下。如果在递归过程中,踩在stepedStNum上的石头数大于等于curMin,那么就可以返回到curMin,没有必要继续计算。
# include & ltstdio.h & gt
void main()
{
int x,s,t,l,curMin,stoneNum,I,temp
int stone loc[100]= { 0 };
int stepedStNum = 0;
x = 0;
printf("输入桥的长度:");
scanf("%d ",& ampl);
printf("输入距离的范围:");
scanf("%d%d ",& amps & amp;t);
printf("输入石头的数量:");
scanf("%d ",& ampstone num);
for(I = 0;我& ltstoneNumi++)
{
scanf("%d ",& ampstone loc[I]);
}
curMin = l;
curMin = updateMin(x,stepedStNum,s,t,l,stoneLoc,stoneNum,curMin);
printf("%d ",curMin);
}
int updateMin(int x,int stepedStNum,int s,int t,int l,int stoneLoc[],int stoneNum,int curMin)
{
int I = 0;
if(x & gt;= l)
{
return stepedStNum
}
for(I = 0;我& ltstoneNumi++)
{
if (stoneLoc[i] == x)
{
stepedstnum++;
打破;
}
}
if(stepedStNum & gt;= curMin)
{
返回curMin
}
for(I = t;我& gt= s;我-)
{
curMin = updateMin(x+i,stepedStNum,s,t,l,stoneLoc,stoneNum,curMin);
}
返回curMin
}