水题 第二站 FatMouse' Trade
来源:互联网 发布:淘宝登录拖动滑块验证 编辑:程序博客网 时间:2024/05/18 03:45
一个很简单的贪心问题,但是很久没做了,一直怀疑是不是背包问题。
由于涉及到小数精度问题,还是有很多小细节需要注意的
结合代码来说
#include <iostream>#include <stdio.h>#include <math.h>#include <algorithm>#include <string.h>using namespace std;struct node{ double j, f;//将j,f设置为int或double对最后的结果的精度有影 //响,为什么呢?不知道 double w;}a[1010];bool cmp(node p, node q)//这里还加了struct,毕竟很久不写了{ return p.w>q.w;}int main (){ int m, n; double sum; while(~scanf("%d %d",&m,&n)) { if(m==-1&&n==-1)break; for(int i=0; i<n; i++) { scanf("%lf %lf",&a[i].j,&a[i].f); a[i].w=(double)a[i].j/a[i].f;//double类型转换, //此处不加也没有影响 } sort(a,a+n,cmp); sum=0; for(int i=0; i<n; i++) { if(m>=a[i].f) { m = m-a[i].f; sum+=a[i].j; } else { sum+=m*(a[i].j/a[i].f);//这里也涉及到小数精度 break;//刚开始写的m=0.==! } } printf("%.3lf\n",sum); } return 0;}
从现在开始练习简单的数据结构和算法的题目了。
不明白为什么double类型的相除和int类型的相除结果转化为double,得到的结果是不一样的。
附简单的double和int的区别
int 和 double 都是基本数据类型, int 是整形, double 是浮点型。
一般来说 , int 型变量占用的存储空间和机器字一样大,即 32位系统中是 4个字节; 64位系统中是 8个字节; 而 double 型变量 一般占用8字节,double 型变量占用的存储空间不会小于 int 型变量。
double 型表示的值范围要比 int 表示的值范围大,且从 double 值转换到 int 值,会进行四舍五入,从而有精度损失。
结论,涉及精度问题最好用double类型。
阅读全文
0 0
- 水题 第二站 FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- FatMouse' Trade
- SpringMVC数据转换
- 八幅漫画理解使用JSON Web Token设计单点登录系统
- C++使用STL中map需要注意的地方
- Android自定义ViewGroup
- 卸载VMware-tools
- 水题 第二站 FatMouse' Trade
- pkg-config
- Spring Boot1.52 Spring Security Spring Data Jpa 整合
- Android图像缩放
- Go编程基础—import下划线的作用
- Multi-class Classication (多分类问题)实例--手写数字识别
- 从前端菜鸟到大神,一篇总结得很好的文章
- git
- Android-检测手机多点触摸点数