算法学习——贪心算法解渡河问题(C语言版)
题目一:有A组人,每组有N人,想用一艘船渡河,该船一次只能载两个人。每个人划船的速度不同,当两个人一组时船的速度由最慢的人决定。求一种方法能让所有人过河并且船的往返时间最短。
输入:第一行输入A;第二行输入N(不超过1000);第三行输入速度(不超过100);
输出:往返时间
样例:
输入
1
4
1 2 5 10
输出
17
#include <stdio.h>
#include <stdlib.h>
int Partition(int speed[],int low,int high){speed[0]=speed[low];int pivotkey=speed[low];while(low<high){while(low<high&&speed[high]>=pivotkey) high--;speed[low]=speed[high];while(low<high&&speed[low]<=pivotkey) low++;speed[high]=speed[low];}speed[low]=speed[0];return low;
}
void Qsort(int speed[],int low,int high){if(low<high){int pivotloc=Partition(speed,low,high);Qsort(speed,low,pivotloc-1);Qsort(speed,pivotloc+1,high);}
}
int main(){int A,N,time=0;scanf("%d",&A);for(int i=0;i<A;i++){scanf("%d",&N);int *speed=(int*)malloc((N+1)*sizeof(int));for(int j=1;j<=N;j++){scanf("%d",&speed[j]);} Qsort(speed,1,N);while (N > 0) {if (N== 1) {time += speed[1];break;}else if (N == 2) {time += speed[2];break;}else if (N == 3) {time += speed[1] + speed[2] + speed[3];break;}else {int s1, s2;s1 = speed[N] + speed[1] + speed[N - 1] + speed[1];s2 = speed[2] + speed[1] + speed[N] + speed[2];time += s1>s2?s2:s1;N -= 2;}}printf("%d\n",time);}return 0;
}
算法学习——贪心算法解渡河问题(C语言版)相关推荐
- C++算法学习(贪心算法)
贪心算法 1.目标 2.方法 3.例题 [122. 买卖股票的最佳时机 II](https://leetcode-cn.com/problems/best-time-to-buy-and-sell-s ...
- python贪心算法最短路径_dijkstra算法(贪心算法)——解决最短路径问题
最短路径 给定一张带权图和其中的一个点(作为源点),求源点到其余顶点的最短路径 基本思想 1)源点u,所有顶点的集合V,集合S(S中存有的顶点,他们到源点的最短路径已经确定,源点u默认在S中),集合V ...
- 趣学算法系列-贪心算法
趣学算法系列-贪心算法 声明:本系列为趣学算法一书学习总结内容,在此推荐大家看这本算法书籍作为算法入门, 原作者博客链接,本书暂无免费电子版资源,请大家支持正版,更多的案例分析请查看原书内容. 第二章 ...
- 3.Python算法之贪心算法思想
贪心算法 1.什么是贪心算法 2.贪心算法的特点和思路 3.贪心算法的缺点 4.贪心算法的基本思路 5.贪心算法的基本过程 6.贪心算法解决"找零"问题 6.贪心算法解决" ...
- 五大算法之三--贪心算法
一.基本概念: 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解. 贪心算法没有固定的 ...
- java调度问题的贪心算法_贪心算法——换酒问题
知识回顾 贪心算法 (greedy algorithm),又称贪婪算法. 是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法. 贪心算法在 有最优子 ...
- 任务分配算法c语言程序,程序员算法基础——贪心算法
原标题:程序员算法基础--贪心算法 前言 贪心是人类自带的能力,贪心算法是在贪心决策上进行统筹规划的统称. 比如一道常见的算法笔试题跳一跳: 有n个盒子排成一行,每个盒子上面有一个数字a[i],表示最 ...
- 贪心算法适用条件_【算法】贪心算法
概念&&介绍 贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解.所以说只有证明局部最优解在全局最优解 ...
- 【趣学算法】贪心算法
14天阅读挑战赛 努力是为了不平庸~ 算法学习有些时候是枯燥的,这一次,让我们先人一步,趣学算法!欢迎记录下你的那些努力时刻(算法学习知识点/算法题解/遇到的算法bug/等等),在分享的同时加深对于算 ...
最新文章
- 690啊690,你不是找骂吗?
- 利用 iPhone X 的脸部识别能力为内容制作工作服务
- 微信公众平台:反正公众号的一切操作都从这里入手!
- java nio 文件_Java nio 的文件处理
- javacv 人脸检测_使用JavaCV进行手和手指检测
- python语言中的注释符_各种语言中的注释符总结
- FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_REORDER_TO_F
- PGpool 编译出错
- 初学WEB前端的建议,你不看给别人可惜了!
- 仅需1分钟,让你的电脑变无线路由器
- 现代操作系统(原书第四版)课后题答案 —— 第二章 进程与线程
- 破解有道翻译反爬虫机制
- 图层蒙版和图层剪贴路径_PS蒙版使用教程、快速蒙版、剪切蒙版、矢量蒙版、图层蒙版要点...
- 墨天轮沙龙 | 麦杰科技卢学东:openPlant 实时数据库系统及应用
- Linux桌面GUI系统的调度器应该怎么做才不卡顿呢?
- 科银资本 Jayden Wei 专访:全球首个区块链经济特区即将诞生
- 自媒体推广应该怎么入手,如何去做
- Franka Emika Panda机械臂规划路径时,rviz中手爪显示碰撞
- 传Livy闭包head of empty list报错排查步骤
- 信息分析——共享经济服务模式的分析与研究