POJ2240汇率转化计算
来源:互联网 发布:程序员 转行 投资 编辑:程序博客网 时间:2024/06/08 15:19
/*题意:几种不同的物品可以互相交换,但是交换的数量不同比如:1 单位 US 换 0.5 单位 British 1 单位 British 换 10.0 单位 French 1 单位 French 换 0.21 单位 US现在我们可以用 1单位US 换 0.5 单位British;再用这 0.5单位British 换 5 单位French再用 5单位French 换 1.05 单位US那么一开始的1单位的US现在就变成了1.05单位US;获利0.05US题目给出所有可供交换的物品和两种可以交换的物品之间的交换价格问是否可以通过交换获利*//*题解:先用map映照把不同的物品编号,再存入邻接矩阵邻接矩阵必须先初始化然后用floyd求出各个物品可以通过交换得到的最大值,再找出每个物品自身的交换后的价值,如果大于原来的价值就输出Yes;否则输出No*/#include<stdio.h>#include<map>#include<string.h>#include<iostream>#include<algorithm>using namespace std;int main(){ map<string,int>m; //map映照容器,用字符串映照数字int t,n,ans;int flag;int r=1;double mp[222][222]; //邻接矩阵用double型储存double x; char str1[222],str2[222]; char str[222];while(scanf("%d",&n) && n){ for(int i=1; i<=n; i++) { scanf("%s",str); m[str] = i; //输入字符串,确定映照的数字 } for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { if(i==j) mp[i][j] = 0.00; //初始化邻接矩阵mp else mp[i][j] = 1.00; } } scanf("%d",&t); for(int i=0; i<t; i++) { scanf("%s %lf %s",&str1,&x,&str2); //储存路径 mp[m[str1]][m[str2]] = x; } //floyd for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { for(int k=1; k<=n; k++) { if(mp[j][k] < mp[j][i] * mp[i][k]) { mp[j][k] = mp[j][i]*mp[i][k]; } } } } printf("Case %d: ",r++); flag = 0; for(int i=1; i<=n; i++) { if(mp[i][i] > 1) //对比交换后的价值是否变大 { flag = 1; printf("Yes\n"); break; } } if(!flag) printf("No\n");}}
阅读全文
1 0
- POJ2240汇率转化计算
- 计算汇率
- poj2240
- poj2240
- poj2240
- POJ2240
- poj2240
- poj2240
- poj2240
- poj2240
- poj2240
- poj2240
- poj2240
- 汇率
- 一个计算外汇汇率的web服务!
- java 汇率计算源代码ZZ
- POJ2240:Arbitrage
- poj2240 Arbitrage
- 不容易系列之(4)——考新郎--错排公式&&排列组合
- Matisse Android图片选择器详细使用
- 洛谷 P1023 税收与补贴问题 (2000NOIP提高组)
- 数组的粒度问题
- 内存对齐问题
- POJ2240汇率转化计算
- hihocoder 1049 : 后序遍历
- python 多线程的启动与阻塞
- jdbc操作sqlserver数据库
- Java设计模式学习——创建型
- ArrayBuffer中保存的Array被后面的覆盖
- hdu3639 Hawk-and-Chicken【强连通】
- 选择结构
- EA&UML日拱一卒-活动图::StartClassifierBehavior和StartObjectBehavior