过桥问题c语言程序,盏灯过桥游戏
博客里面好像没办法嵌入flash,加入之后,flash并不显示,只显示一片空白,不知道是博客等级缘故还是本身的限制
下面给出地址,有兴趣自己去试试
建议玩过了这个游戏后,再看下面的思路
问题描述
有n个人要在晚上过一座独木桥,他们过桥速度有快有慢,每次最多只能有两个人过桥,而且他们只有一盏灯,他们必须在规定时间内全部通过,否则灯会灭掉。
玩过这个游戏的人会得出两个简单逻辑,一灯必须靠快的人传递,二,两个人的过桥时间取决于慢的人。有了这两个基本信息,我们先将问题缩小为两个人A和B的情形,假定速度是从快到慢,下同
A,B的过桥时间为B
三个人的情况
A,B,C,简单想一下可以得出,为了使得传递速度够快,需要A作为传递的人,所以过桥方案为
1.A,C过桥
2,A返回
3 A,B过桥
总计时间 C+A+B
下面要考虑四个人的情形ABCD
这里有两种作法
方案S1
由A当传递,根据上述分析,我们很快可以得到最终时间为D+C+B+2*A
方案S2
由A,B当做传递,过桥方案为
1,A,B先过
2,A返回
3,D,C过(最慢的要一起过,这样可以节省时间)
4,B返回
5,A,B过桥
总计时间 B+A+D+B+B
将两个方案比较一下,S1的总时间T1-S2的总时间T2 = A+C-2*B
A+C-2*B >0则用方案2,否则用方案1
由此,我们将思路整理一下
首先将N个人按照速度从快到慢排成一个队列q[]
当n>3的时候,取队列的最后两位(最慢)和最前两位(最快),组合成ABCD,根据A+C-2*B的情况,采用某个过桥方案。n-=2,重复该过程直到n<=3为止。
当n==3
过桥时间为A+B+C
当n==2,过桥时间为B
当n==1,过桥为A
程序清单
#include
#include
#define PERSON_NUM 5
#define TIME_LIMITS 30
#define A speed[0]
#define B speed[1]
#define C speed[n-2]
#define D speed[n-1]
#define LAST speed[n-1]
int speed[PERSON_NUM] = {1,3,6,8,12};//已经按照升序输入,若没有,
//可以使用sort或者qsort排序
void print_solution1(int n)
{
printf("1th,%dth
printf("1th --> times need %d\n",speed[0]);
printf("1th,%dth
printf("1th --> times need %d\n",speed[0]);
}
void print_solution2(int n)
{
printf("1th,2th
printf("1th --> times need %d\n",speed[0]);
printf("%dth,%dth
printf("2th --> times need %d\n",speed[1]);
}
void main()
{
int times = 0;
int n = PERSON_NUM;
while(n>0)
{
if(n>3)
{
if((A+C)>2*B) //采用方案2
{
times+=(D+A+2*B);
print_solution2(n);
}
else
{
times+=(D+C+2*A);
print_solution1(n);
}
n-=2;
}
else if(n==3)
{
times += (A+B+LAST);
printf("LAST_A,B,C times need %d\n",(A+B+LAST));
break;
}
else if(n==2)
{
times+=(B);
printf("LAST_A,B times need %d\n",(B));
break;
}
else if(n==1) //只有一个人的情况
{
times+=A;
break;
}
}
printf("min time: %d \n",times);
}
测试输入
1,3,6,8,12
1,5,6,8,12
1,8,9,11,12,13,15,20,100
下一期预告
泰坦尼克号赌船
过桥问题c语言程序,盏灯过桥游戏相关推荐
- 过桥问题c语言程序,多人过桥问题【c语言递归实现】【源代码】
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #define MAX 100 int GuoQiao(int a[], int n) { int time; if (n==1) { ...
- c语言程序小灯从右向左闪烁,单片机控制LED灯点亮(C语言).PPT
<单片机控制LED灯点亮(C语言).PPT>由会员分享,可在线阅读,更多相关<单片机控制LED灯点亮(C语言).PPT(45页珍藏版)>请在人人文库网上搜索. 1.1,单片机控 ...
- 交通灯控制系统设计左转倒计时protues仿真的c语言程序,交通灯控制系统设计
内容介绍 原文档由会员 ½ӨӨ 发布 交通灯控制系统设计 1万字 32页 包括程序代码,系统原理图,Proteus仿真过程 摘要 本设计是交通信号灯控制系统,随着社会的不断的进步,社会的不断发展.交通 ...
- 黄灯闪烁c语言程序,交通灯控制程序 需要加一个黄灯闪烁三次 求求大神
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include "reg52.h" //头文件typedef unsigned char u8;typedef unsigned i ...
- 流水灯循环点亮c语言程序,流水灯来回点亮程序(汇编和C)
前头看单片机c语言,忘了汇编,这几天跟几位兄弟去给下面的师弟师妹上实验课,用的是wave的实验箱.用汇编语言编程.算是一个复习. 汇编:本文引用地址:http://www.eepw.com.cn/ar ...
- 动物棋c语言程序,斗兽棋游戏手机版|斗兽棋游戏下载 v0.2C 安卓版_最火软件站...
斗兽棋android手机版,动物对战棋,回味童年的棋牌休闲游戏,登陆android手机,整个游戏画面是分为两块区域,中间有河流分割两块区域,有桥梁可以让彼此的动物过河,要取得胜利,必须占领那一边动物的 ...
- c语言程序模拟点灯,点灯游戏(自己编的)
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include #include #include typedef struct stu { int x; int ...
- c语言程序女设计教学效果分析,提高C程序设计教学效果的策略
摘 要:本文针对高等院校非计算机专业学生特点和C语言程序设计在教学中存在的问题,从激发学生学习兴趣入手,注重教学方法,机房实验,考核形式等多方面分析并提出一定的改进方法,实现有效教学,达到教与学的共赢 ...
- 四人过桥、三盏灯 三个开关 的答案
题目都还是比较老了,再来温习下吧: 1. 有两个房间,其中一间房里有三盏灯,另一间房里有控制这三盏灯的开关.这两间房是相对独立.相对封闭的,没有空 上的直接联系:三盏灯与三个开关也没有顺序上的必然联系 ...
最新文章
- python生成有条件的列表_python复杂列表生成式教程
- CodeForces - 1263A Sweet Problem(思维,水题)
- iOS NSString和NSDate转换
- linux构建主从域名服务器
- html 手机访问优化,移动端首屏优化
- webstorm使用gitee_webstorm 中 git 基本操作
- FTP学习的一些笔记
- java获取页面点击次数_在Java中怎样得出一个按钮点击的次数
- cojs 安科赛斯特 题解报告
- 使用Docker+Jenkins自动构建部署
- [LeetCode] Number of 1 Bits 位操作
- 超全!常见自动化运维工具全解析(含ansible、Puppet、SaltStack教程)
- 钉钉入局在线文档市场,阿里和腾讯再次对决?
- 电流检测的方式与误差来源
- Python实战:淘宝自动抢购
- 从玩法、叙事、主题三个角度浅要谈谈《死亡搁浅》的好与坏
- 与mysql类似的数据库_目前主流的数据库是哪种?
- 【Eelectron-vue】构建桌面应用(20)-electron的退出quit和exit
- 软件英文术语缩写大全
- 鼠标移上去触动hover致使div向上移动几个相素(动画transition轻轻的移动)
热门文章
- 在创建ArcGIS Server10.5的站点时,系统提示创建‘System/publishingToolsEX.GPServer’失败(转)...
- SpringCloud(第 051 篇)EurekaServer集群高可用注册中心以及简单的安全认证
- Level3公司在哥伦比亚开通运营第三个数据中心
- 如何修改系统时间显示格式
- 用简单的C语言实现多任务轮流切换(模拟操作系统线程机制)【转】
- Sparse low rank approximation
- Android 导入项目时出现错误的解决方法(红色感叹号)
- 解决博客园模版错误排版的一个问题
- ubuntu+php+mysql+apache安装配置
- pythonweb服务器部署iis_Python开发入门与实战15-IIS部署