URAL1826 Minefield(简单递归)
来源:互联网 发布:网络销售法律法规 编辑:程序博客网 时间:2024/05/29 18:12
Minefield
Description
To fulfill an assignment, a reconnaissance group of n people must cross the enemy's minefield. Since the group has only one mine detector, the following course of action is taken: two agents cross the field to the enemy's side and then one agent brings the mine detector back to the remaining group. This is repeated until only two agents remain. These two agents then cross the field together.
Each person gets across the field at their own speed. The speed of a pair is determined by the speed of its slower member.
Find the minimal time the whole group needs to get over the minefield.
The first line contains the integer n (2 ≤ n ≤ 100). The i-th of the following n lines specifies the time the i-th member of the group needs to get over the minefield (the time is an integer from 1 to 600).
Output
Output the minimal total time the group needs to cross the minefield.
Sample Input
411052
17
题意:一队士兵要经过敌人的雷区,因为探测仪只有一个,所以每次都是2个过去,然后一个人回来,路上所花费的时间都计较大的那个数,问所有人通过需要的最短时间。
思路:首先把所有人所需要花费的时间从小到大排列,要使总花费的时间比较少,那么我们有两种最优走法:
1.最小的和第二小的先过去,最小的回来带最大的过去,然后带第二大的过去……
2.最小的和第二小的先过去,最小的回来,最大的和第二大的过去,然后第二小的回来……
当n>=3的时候我们只要每次比较一下这两种走法那种更省时即可,就是一个简单的递归。
代码如下:
#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>using namespace std;int spd[105];int n,time;void f(int num){if(num==1) time+=spd[1]; else if(num==2) time+=spd[2]; else if(num==3) time+=spd[1]+spd[2]+spd[3]; else { time+=min(2*spd[1]+spd[num-1]+spd[num], 2*spd[2]+spd[1]+spd[num]); f(num-2); } }int main(){while(scanf("%d",&n)!=EOF){time=0;for(int i=1; i<=n; i++){scanf("%d", &spd[i]);}sort(spd+1, spd+n+1);f(n);printf("%d\n", time);}return 0;}
0 0
- URAL1826 Minefield(简单递归)
- URAL 1826. Minefield(数学 递归)
- URAL 1826 Minefield
- URAL 1826. Minefield 贪心
- URAL - 1826 Minefield
- 简单计算器(递归写法)
- 简单递归
- 简单递归
- 简单递归
- 简单递归
- 简单递归
- 简单递归
- 简单递归
- 简单递归—Hanoi(汉诺塔问题)
- 简单斐波那契(递归)
- 算法训练 s01串 (简单递归)
- 二叉查找(最简单的递归)
- 简单阶乘算法(递归解决)
- 队列操作(一)
- 17,Letter Combinations of a Phone Number
- 网络学习笔记:子网掩码
- 如何整合S2SH(三)
- Boss OpenCart 商城自适应主题模板 ABC-0012-01
- URAL1826 Minefield(简单递归)
- 我的3D游戏消息泵1
- 【OpenCL】初学摘要(一)
- Plan Procurement Outputs You Should Know for the PMP Certification Exam
- 二级 求26个英语字母在字符串中的出现次数
- 许多舍近求远的教训总结
- leetcode-28 Implement strStr()
- 特性价值及应用场景_示例
- DICOM:DICOM3.0网络通信协议(续)