百炼-2795-金银岛-C语言-快速排序
来源:互联网 发布:全球数据库软件公司 编辑:程序博客网 时间:2024/05/16 12:38
快排大法好。
/****************************************************文件名:百炼-2795**Copyright (c) 2010-2020 OrdinaryCrazy**创建人:OrdinaryCrazy**日期:20170803**描述:百炼-2795参考答案**版本:1.0***************************************************/#include <stdio.h>#include <stdlib.h>/*********很直观的解决办法就是我们先找性价比高的金属装所以这道题的关键在于对单价快速排序*********/int times,kind,carry;double cost;struct metrial{ int weight; int cost; double unit;}metrials[100];typedef struct metrial metrial;void swap(metrial*a,metrial*b){ metrial tmp; tmp = *a; *a = *b; *b = tmp;}/******************************************函数名:qs**输入:l-需要排序的左侧起始索引** r-需要排序的右侧起始索引**功能:将l-r区间内的metrial结构变量按照单价由高到低排序**作者:OrdinaryCrazy**日期:20170803**版本:1.0*****************************************/void qs(int l,int r){ if(l>r) return; int i = l,j = r; double x = metrials[l].unit; while(i < j) { while(metrials[j].unit <= x&&i<j)j--;//从右边找一个比基准数大的数 while(metrials[i].unit >= x&&i<j)i++;//从左边找一个比基准数小的数 if(i<j) swap(&metrials[i],&metrials[j]);//还没有找到基准数归位的位置 }//应该说到这里i和j应该是已经相遇了,即i=j找到了基准数归位的位置 swap(&metrials[j],&metrials[l]); qs(l,j-1); qs(i+1,r);}int main(){ int i,j; scanf("%d",×); for(i = 0;i < times;i++) { scanf("%d%d",&carry,&kind); for(j = 0;j < kind;j++) { scanf("%d%d",&metrials[j].weight,&metrials[j].cost); metrials[j].unit = (double)metrials[j].cost / (double)metrials[j].weight; } qs(0,kind - 1); cost = 0; for(j = 0;carry;j++) { if(carry >= metrials[j].weight) { cost +=metrials[j].cost; carry -=metrials[j].weight; } else { cost += carry*metrials[j].unit; carry = 0; } } printf("%.2f\n",cost); } return 0;}
阅读全文
0 0
- 百炼-2795-金银岛-C语言-快速排序
- POJ百炼-2795-金银岛
- 百炼-2792-集合加法-C语言-计数排序
- 百练2795:金银岛题解
- 快速排序--C语言
- 快速排序C语言
- 快速排序--C语言
- C语言快速排序
- 快速排序--C语言
- C语言:快速排序
- c语言快速排序
- C语言快速排序
- C语言 快速排序
- 【C语言】快速排序
- C语言快速排序
- C语言快速排序
- C语言快速排序
- C语言快速排序
- 程序员应该阅读的书籍
- 深度学习视觉领域常用数据集汇总
- java 集合类深入理解
- 八大排序算法
- 继承
- 百炼-2795-金银岛-C语言-快速排序
- 入职程序员,最好的资源分享给大家
- C#学习笔记之以指定的大小缩放图片
- DOM操作
- C++学习笔记之vector
- vue.js基础-模板语法-指令
- Ubuntu16.04系统常用软件安装
- 关于jquery、ajax向后台传输数组的问题
- oi笔记 数学