用C完成一道基础算法题
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/11 22:49:55
用C完成一道基础算法题
因为是刚刚才算接触算法,希望代码可以增加适量注释,3Q、
我要是想通了并且可以AC过 就采纳了……
因为是刚刚才算接触算法,希望代码可以增加适量注释,3Q、
我要是想通了并且可以AC过 就采纳了……
#include<stdio.h>
void main()
{ int maxdis,stcount,k,t,j=0,f=0; //maxdis最大行驶距离 stcount 加油站个数 f为标志
int dis[1000]={0},ndis[1000]={0}; //dis数组存放每个车站间距离 ndis数组存放每次加油行驶距离
scanf("%d%d",&maxdis,&stcount);
for(k=0;k<=stcount;k++)
scanf("%d",&dis[k]);
for(k=0;k<=stcount;k++) //检查是否有不能达到的车站
if(maxdis<dis[k])
{ printf("No Solution!\n"); f=1;break;}
if(!f)
{
for(k=0,t=0;k<=stcount;k++)
{ t+=dis[k]; //将行驶距离组合到ndis中
if(t>maxdis)
{ t-=dis[k];
ndis[j++]=t;
t=dis[k];
}
}
for(k=0;;k++) //统计加油次数
if(!ndis[k]) break;
printf("n=%d\n",k);
}
}
再问: 提交的时候 是显示timelimitedexception 即 超时了 运算效率不够高 你觉得应该怎么优化这个程序呢 我基本看懂了你的代码 我也在尝试优化, 你有时间也帮我下吧。
再答: 把最后的循环求个数的那个去掉,直接输出j的值
再问: 显示WRONG ANSWER了…… 给你看下我提交的代码
再问: 不知道啊 系统 和我说错了 你有空的话 也去试下看 http://acm.nbut.cn/Problem/view.xhtml?id=1026