题目一:有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语言版)相关推荐

  1. C++算法学习(贪心算法)

    贪心算法 1.目标 2.方法 3.例题 [122. 买卖股票的最佳时机 II](https://leetcode-cn.com/problems/best-time-to-buy-and-sell-s ...

  2. python贪心算法最短路径_dijkstra算法(贪心算法)——解决最短路径问题

    最短路径 给定一张带权图和其中的一个点(作为源点),求源点到其余顶点的最短路径 基本思想 1)源点u,所有顶点的集合V,集合S(S中存有的顶点,他们到源点的最短路径已经确定,源点u默认在S中),集合V ...

  3. 趣学算法系列-贪心算法

    趣学算法系列-贪心算法 声明:本系列为趣学算法一书学习总结内容,在此推荐大家看这本算法书籍作为算法入门, 原作者博客链接,本书暂无免费电子版资源,请大家支持正版,更多的案例分析请查看原书内容. 第二章 ...

  4. 3.Python算法之贪心算法思想

    贪心算法 1.什么是贪心算法 2.贪心算法的特点和思路 3.贪心算法的缺点 4.贪心算法的基本思路 5.贪心算法的基本过程 6.贪心算法解决"找零"问题 6.贪心算法解决" ...

  5. 五大算法之三--贪心算法

    一.基本概念:        所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解.      贪心算法没有固定的 ...

  6. java调度问题的贪心算法_贪心算法——换酒问题

    知识回顾 贪心算法 (greedy algorithm),又称贪婪算法. 是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法. 贪心算法在 有最优子 ...

  7. 任务分配算法c语言程序,程序员算法基础——贪心算法

    原标题:程序员算法基础--贪心算法 前言 贪心是人类自带的能力,贪心算法是在贪心决策上进行统筹规划的统称. 比如一道常见的算法笔试题跳一跳: 有n个盒子排成一行,每个盒子上面有一个数字a[i],表示最 ...

  8. 贪心算法适用条件_【算法】贪心算法

    概念&&介绍 贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解.所以说只有证明局部最优解在全局最优解 ...

  9. 【趣学算法】贪心算法

    14天阅读挑战赛 努力是为了不平庸~ 算法学习有些时候是枯燥的,这一次,让我们先人一步,趣学算法!欢迎记录下你的那些努力时刻(算法学习知识点/算法题解/遇到的算法bug/等等),在分享的同时加深对于算 ...

最新文章

  1. 690啊690,你不是找骂吗?
  2. 利用 iPhone X 的脸部识别能力为内容制作工作服务
  3. 微信公众平台:反正公众号的一切操作都从这里入手!
  4. java nio 文件_Java nio 的文件处理
  5. javacv 人脸检测_使用JavaCV进行手和手指检测
  6. python语言中的注释符_各种语言中的注释符总结
  7. FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_REORDER_TO_F
  8. PGpool 编译出错
  9. 初学WEB前端的建议,你不看给别人可惜了!
  10. 仅需1分钟,让你的电脑变无线路由器
  11. 现代操作系统(原书第四版)课后题答案 —— 第二章 进程与线程
  12. 破解有道翻译反爬虫机制
  13. 图层蒙版和图层剪贴路径_PS蒙版使用教程、快速蒙版、剪切蒙版、矢量蒙版、图层蒙版要点...
  14. 墨天轮沙龙 | 麦杰科技卢学东:openPlant 实时数据库系统及应用
  15. Linux桌面GUI系统的调度器应该怎么做才不卡顿呢?
  16. 科银资本 Jayden Wei 专访:全球首个区块链经济特区即将诞生
  17. 自媒体推广应该怎么入手,如何去做
  18. Franka Emika Panda机械臂规划路径时,rviz中手爪显示碰撞
  19. 传Livy闭包head of empty list报错排查步骤
  20. 信息分析——共享经济服务模式的分析与研究

热门文章

  1. pd.set_option
  2. python万花筒教程_Python: PS 滤镜--万花筒效果
  3. 计算机网络第一章学习
  4. C ++和Java传统中积极的一面
  5. C++中的out-of-line虚函数
  6. mendeley云端容量_除了Endnote,Mendeley也是你值得拥有的文献管理器
  7. 转载--doctype
  8. 第十三届蓝桥杯全国软件和信息技术专业人才大赛(web应用开发)
  9. Java的基础语法(8)-- API常见的类的介绍匿名对象
  10. Web静态页面:华为商城主页