C语言高手请进,简单的编程题

是个过桥问题,有四个人,一把电筒,有一座桥,同时最多能够通过两个人,在桥上的人必须有一把手电筒,甲用时10分钟、乙5分钟、丙2分钟、丁1分钟,问在不浪费最快的人过桥速度的情况下,最短的过桥时间,要用C语言编程,求各位大虾指点!有高分!

第1个回答  2010-04-09
#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();
}
好难找的!!!本回答被提问者采纳
第2个回答  2010-04-09
先2分钟和1分钟的过去,1分钟带着电筒返回
再5分钟和1分钟的过去,1分钟带着电筒返回
再10分钟和1分钟的过去
一共用19分钟,所以程序是

int main()
{
printf("19min\n");
return 0;
}
第3个回答  2010-04-08
构造一个状态集吧。然后搜索花费最少的~

高分C语言问题~~·高手请进
A[n]中,n代表有多少堆果子,A中的元素代表各堆的果子数目 int getValue(int A[]){ 初始 int S=0 1. (数组A)n个数字从小到大排序 (例如:1,2,9)2. 取上步中最小的两个数相加之和为一个M , S=S+M 3. 数组A中除去最小的两个数,然后将M加进去形成一个新数组A元素个数为 n=n-1...

C语言高手请进来11
第一题:运行后,循环第一轮后输出8,第二轮后输出7,第三轮输出6,第四轮时达到要求退出循环,结束程序。选B 第二题:这个是找出小于等于50的整数中能被2、3、7整除的数,这个题直接从答案里找一个,所以选C 第三题:运行到这个时for(j=0;j < 3;j++){ if(j%2) continue;x++;} x++ ...

编程高手请进!(C语言)
1.include <stdio.h> include<stdlib.h> include<ctype.h> main(){ int count;\/*猜数字的次数*\/ int number;\/*系统产生的随机数字*\/ int guess;\/*程序员输入数字*\/ char yes='Y';clrscr();printf("\\nNow let us play the game.\\n Guess the number:");while (toupper(yes)=='Y'...

c语言编程题,请高手帮忙做一下,拜谢,急急急急……
1.include <stdio.h> double funcPi(int);int main(void){ int arg;printf("Input the argument: ");\/\/ \/\/ 无异常输入 \/\/ while (!scanf("%d", &arg)){ printf("Check your input and retry: ");while (getchar()!='\\n'){ continue;} } while (getchar()!='\\n'){ continue...

高手请进!你好,请把我写一个C语言的编程题,本人不胜感激!
void ReadDat(int a[],int b[]);void jsSort(int a[],int b[]);void WriteDat(int a[],int b[]);\/\/为了调试方便,将学生人数取为5,将其中的5改为100就合题意了.思路较简单,未加标注 void main(){ int aa[100],bb[100];ReadDat(aa,bb);jsSort(aa,bb);WriteDat(aa,bb);}...

C语言高手 请告诉我几道简单的题! 我想搞明白 谢谢
1 . 首先我们定义的是一个指针数组,pt[3] 它和数组类似,数组名表示的是第一个字符,而指针名则表示第一个指针,所以pt应该是pt[0],而pt[0]对应的是t[0][]在 *(*(pt+l)+2) 中 先看pt+l 对于数组来说,每一行的内存是连续分配的, 所以pt+l就是pt当前这一行的下一行,即t[1][]...

求C语言程序,高手请进...
\/*1.输入一个以回车结束的字符串(少于80个字符),将其中的大写字母用下面列出的对应大写字母替换,其余字符不变,输出替换后的字符串 原字母 对应字母 A Z B Y C X D W X C Y B Z A*\/ \/*#include <stdio.h> void main(){ char str[80];char a;int i=0;s...

[C语言问题][高手请进] 12345 怎样通过+ - × ÷得 22 ?
include <string> using namespace std;double num[5];string exps[5];double round(double d,int p){ double *dp,d1;dp=new double;d=d*pow(10,p);d1=modf(d,dp);d1>=0.5?d=(*dp+1)\/pow(10,p):d=*dp\/pow(10,p);delete dp;return d;} is22(int n){ int i,j;...

C语言编程问题.请高手进(附源码)!!!HELP
default:printf("输入错误,请重新打开程序输入!");} } void fcxxwh(void){int a,b,c;printf("1.录入\\t");printf("2.修改\\t");printf("3.删除\\t");printf("\\n请输入所需要的功能:");scanf("%d",&a);switch(a){case 1:printf("请输入录入次数:");scanf("%d",&b);\/\/---&b...

C语言编程问题,高手请进,急问!
??比如在1秒内没有按键,但不能保证下1秒还是没有按键,难道就一直的等下去?如果是在一些开发环境中,可以将判断按键是不是为回车写在OnKeyPress事件上。下面只给出一个输出按的什么键的程序 int getkey(){ int c;c = getchar();putchar(c);return c;} ...

相似回答