早教吧作业答案频道 -->其他-->
一辆汽车加满油后可以行驶N千米.旅途中有若干个加油站.若要使沿途的加油次数最少,设计一个有效的算法,指出应在那些加油站停靠加油.并证明你的算法能产生一个最优解.
题目详情
一辆汽车加满油后可以行驶N千米.旅途中有若干个加油站.若要使沿途的加油次数最少,设计一个有效的算法,指出应在那些加油站停靠加油.并证明你的算法能产生一个最优解.
▼优质解答
答案和解析
#include
#define N 1000
int greedy(int d[],int n,int k)
{
int num = 0;
\x05int i=0;
\x05int s=0;
for( i = 0;i < k;i++)
\x05{
if(d[i] > n)
\x05\x05{
printf("no solution\n");
return 0;
}
}
for( i = 0,s = 0;i < k;i++)
\x05{
s += d[i];
if(s > n)
\x05\x05{
num++;
s = d[i];
}
}
printf("%d\n",num);
\x05
\x05return 1;
}
void main()
{
int i,n,k;
int d[N];
\x05printf("请输入汽车可行驶:\n");
scanf("%d",&n);
\x05printf("加油站的个数:\n");
\x05scanf("%d",&k);
for(i=0;i
#define N 1000
int greedy(int d[],int n,int k)
{
int num = 0;
\x05int i=0;
\x05int s=0;
for( i = 0;i < k;i++)
\x05{
if(d[i] > n)
\x05\x05{
printf("no solution\n");
return 0;
}
}
for( i = 0,s = 0;i < k;i++)
\x05{
s += d[i];
if(s > n)
\x05\x05{
num++;
s = d[i];
}
}
printf("%d\n",num);
\x05
\x05return 1;
}
void main()
{
int i,n,k;
int d[N];
\x05printf("请输入汽车可行驶:\n");
scanf("%d",&n);
\x05printf("加油站的个数:\n");
\x05scanf("%d",&k);
for(i=0;i
看了 一辆汽车加满油后可以行驶N千...的网友还看了以下:
已知a,b为正有理数,设m=b/a,n=(2a+b)/(a+b).求证:根号2的大小在m,n之间. 2020-04-06 …
已知a1,a2,a3*****a2003都是正有理数,设A=(a1+a2+a3+...+a2002 2020-05-13 …
急:数学证明tellmewhy三角形abc的边长为有理数,设为a,b,c证cosA是有理数,为什么 2020-05-17 …
设a>b>0,m>0,则b/ab+m/a+ma,b,m为有理数.设a>b>0,m>0则b/ab+m 2020-06-08 …
二次剩余的证明改如何着手?看书没有看懂,特来求教p是一个大于2的素数.求证1,2…p-1其中一半是 2020-06-12 …
若x,y是有理数,设n=3x^2+2y^2-18x+8y+35,则n是什么数 2020-06-14 …
设a.b.c为非零有理数,设a.b.c为非零有理数,|a|+a=0,|abl=ab,|c|-c=0 2020-07-20 …
若xy都是有理数,设N=x²+y²-18x+8y+350,请判断N的符号 2020-10-31 …
x、y是有理数,设N=3x²+2y²-18x+8y+35,则N是值是()A、正数B、负数C、奇数D、 2020-10-31 …
某造船厂有2个车间,如果从甲车间设出150到乙车间,那么两车间人数相等,如果从乙车间调100人到甲车 2020-11-30 …