设为首页 加入收藏

TOP

poj 2240-Arbitrage Bellman-ford算法
2014-11-24 10:10:48 】 浏览:2095
Tags:poj 2240-Arbitrage Bellman-ford 算法

怎么说呢,开学两天了,总感觉时间不够用的,这也不错,可以彻底治一治自己的拖拉低效的毛病,还有就是现在无法感受到一种激情,那种由于自己冥思苦想切出题来的快感,从1007开始,我在poj上集中了图论的知识,靠着一本教科书将代码与部分算法表达出来,可是,这样的后果就是没有味道,如同吃过别人吐出来的饭菜那样恶心,而完全凭自己的实力去想,根本连北都找不到方向,关键的关键,这几个求最短路径问题的算法我能知道是怎么求的,但就是无法运用自己,就像自己掌握的那些初高中的数学知识.在网上找了找问答,他们说对付这种情况就是练习,还有哥们说那你就吃饭想,睡觉想,整个人完全沉浸在其中.我现在的问题不是完全看不同,就是总感觉有一点没透,自己不管怎样,坚持下去,完成自己对自己的承诺,那就每天完成一定的代码与理论知识.

--------------------------------------------------分割线---------------------------------------

套汇问题:假定1美元兑换0.5英镑,1英镑兑换10.0法郎,1法郎兑换0.21美元,那么,一个聪明的商人就可以用1美元兑换0.5*10.0*0.21=1.05美元,获利%5,请你根据外汇列表测试是否存在套汇.

我们将每种货币看成一个顶点,两种货币之间的汇率看成权值,这样就可以看成从源点出发,经过各点回到自己的一条回路,我们把每条路径上的权值相乘,看结果是否大于1,当然,我们必须测试图中的每一个节点.

本题的数据输入很失一般性,在这个过程中就能学不少的东西.将货币名称转换为数字


下面是测试数据图解:

\

\

#include
  
   
#include
   
     #include
    
      using namespace std; #define maxn 50 //顶点数最大值 #define maxm 1000//边数最大值 /*汇率关系数组*/ struct exchange { int ci,cj; double cij; }ex[maxm]; int i,j,k; int n,m;//货币种类,汇率的数目 char name[maxn][20],a[20],b[20];//货币名称 double x;//读入的汇率 double maxdist[maxn];//从原点i到其他每个顶点(包括它本身)的最长路径长度 int flag; int kcase=0; int read() { scanf("%d",&n); if(n==0) return 0; for(i=0;i
     
      maxdist[ex[i].cj])//include itsel maxdist[ex[i].cj]=maxdist[ex[i].ci]*ex[i].cij; } } if(maxdist[v0]>1.0) flag=1; } int main() { //freopen("in.txt","r",stdin); while(read()) { for(i=0;i
      
       

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇POJ - 2352 Stars (树状数组) 下一篇C++ class成员函数的奇葩用法

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目