HDU 1009
来源:互联网 发布:淘宝达人有什么用 编辑:程序博客网 时间:2024/05/28 04:53
题目描述:
HDOJ 1009
分析:
最简单的贪心算法的应用。
由于可以购买一个房间中的部分JavaBeans,直接将所有的JavaBeans按单价由高到低排序,然后贪心购买即可。最后购买的那个房间可能只购买其中的一部分JavaBeans。
源码:
#include <stdio.h>void bubbleSort(float price[], int J[], int F[], int N);main(){int M, N;int J[1000], F[1000]; //JavaBeans和cat food的重量float price[1000]; //JavaBeans的单价scanf("%d%d", &M, &N);float result;while (!(M==-1 && N==-1)){for (int i = 0; i < N; i ++){scanf("%d%d", &J[i], &F[i]);price[i] = (float)F[i] / (float)J[i];}//按单价由低到高对所有仓库进行排序bubbleSort(price, J, F, N);int sumF = 0, sumJ = 0;for (int i = 0; i < N; i ++)sumF = sumF + F[i];for (int i = 0; i < N; i ++)sumJ = sumJ + J[i];//如果cat food足够多,则可以买下全部的JavaBeansif (M >= sumF)result = sumJ;//cat food只能买一部分仓库中的JavaBeans,贪心购买else{result = 0;int i = 0;while (M > 0){if (M > F[i]){result = result + J[i];M = M - F[i];i ++;}else{result = result + (float)M / (float)F[i] * (float)J[i];M = 0;}}}printf("%.3f\n", result);scanf("%d%d", &M, &N);}}void bubbleSort(float price[], int J[], int F[], int N){float floatTemp;int intTemp;for (int i = 0; i < N-1; i ++){for (int k = N-1; k > i; k --){if (price[k] < price[k-1]){floatTemp = price[k];price[k] = price[k-1];price[k-1] = floatTemp;intTemp = J[k];J[k] = J[k-1];J[k-1] = intTemp;intTemp = F[k];F[k] = F[k-1];F[k-1] = intTemp;}}}}
- hdu 1009
- HDU 1009
- hdu 1009
- hdu 1009
- hdu 1009
- HDU 1009
- HDU 1009
- HDU 1009
- hdu 1009
- hdu 1009
- hdu 1009
- hdu 1009
- HDU 1009
- hdu--1009
- hdu 1009
- hdu 1009
- HDU 1009
- HDU-1009
- android截屏方法
- java远程共享文件访问jcifs解决密码中特殊符号问题
- .asp网页连接数据库设置方法
- Android如何通过content provider构建媒体文件数据库
- 修改eclipse背景、字体颜色.
- HDU 1009
- 如何获得android手机拍照后照片的存放目录
- BeautifulSoup库的基本使用说明-01
- Flex入门指南—PHP开发者
- Install Greenplum Hadoop on VirtualBox 4.2 + centos 6.2
- android---利用反射实现的屏幕录制技术
- Android 开发之多线程处理、Handler 详解
- linux下破解Python集成开发环境WingIDE4.1,以及使用PyCharm的使用
- GPT转MBR分区格式图文教程