
C语言高手请进,简单的编程题
是个过桥问题,有四个人,一把电筒,有一座桥,同时最多能够通过两个人,在桥上的人必须有一把手电筒,甲用时10分钟、乙5分钟、丙2分钟、丁1分钟,问在不浪费最快的人过桥速度的...
是个过桥问题,有四个人,一把电筒,有一座桥,同时最多能够通过两个人,在桥上的人必须有一把手电筒,甲用时10分钟、乙5分钟、丙2分钟、丁1分钟,问在不浪费最快的人过桥速度的情况下,最短的过桥时间,要用C语言编程,求各位大虾指点!有高分!
展开
3个回答
展开全部
#include<stdio.h>
#define N 4
main ()
{
int i,j,t,s,p,time=0,mintime;
int x[N]={10,5,2,1};
for (i=0;i<N-1;i++) /*从大到小排序*/
for (j=i+1;j<N;j++)
if (x[i]<x[j])
{
t=x[i];
x[i]=x[j];
x[j]=t;
}
for (i=0;i<N;i++) /*显示排好的顺序*/
printf("x[%d]=%d\n",i,x[i]);
printf("\n");
p=N/2; /*数组元素的对数*/
s=N%2;
for (j=0;j<p;j++)
{
time=time+x[j];
j++;
}
if (s==0) /*数组元素为偶数个*/
mintime=time+p*x[N-2]+(p-1)*x[N-2]+(p-1)*x[N-1];
else /*数组元素为奇数个*/
mintime=time+p*x[N-2]+(p-1)*x[N-2]+(p-1)*x[N-1]+x[N-3]; /*加上倒数第三个数*/
printf("mintime=%d\n",mintime);
getch();
}
好难找的!!!
#define N 4
main ()
{
int i,j,t,s,p,time=0,mintime;
int x[N]={10,5,2,1};
for (i=0;i<N-1;i++) /*从大到小排序*/
for (j=i+1;j<N;j++)
if (x[i]<x[j])
{
t=x[i];
x[i]=x[j];
x[j]=t;
}
for (i=0;i<N;i++) /*显示排好的顺序*/
printf("x[%d]=%d\n",i,x[i]);
printf("\n");
p=N/2; /*数组元素的对数*/
s=N%2;
for (j=0;j<p;j++)
{
time=time+x[j];
j++;
}
if (s==0) /*数组元素为偶数个*/
mintime=time+p*x[N-2]+(p-1)*x[N-2]+(p-1)*x[N-1];
else /*数组元素为奇数个*/
mintime=time+p*x[N-2]+(p-1)*x[N-2]+(p-1)*x[N-1]+x[N-3]; /*加上倒数第三个数*/
printf("mintime=%d\n",mintime);
getch();
}
好难找的!!!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先2分钟和1分钟的过去,1分钟带着电筒返回
再5分钟和1分钟的过去,1分钟带着电筒返回
再10分钟和1分钟的过去
一共用19分钟,所以程序是
int main()
{
printf("19min\n");
return 0;
}
再5分钟和1分钟的过去,1分钟带着电筒返回
再10分钟和1分钟的过去
一共用19分钟,所以程序是
int main()
{
printf("19min\n");
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
构造一个状态集吧。然后搜索花费最少的~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询