日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

java - 已知外匯牌價折算匯率

瀏覽:251日期:2023-10-14 13:27:48

問題描述

碰到了一個關(guān)于元組的算法問題

請大家?guī)兔纯?能不能給個答案,或者解決思路也行.

謝謝!

三元組(a,b,c)標(biāo)識a幣種到b幣種的匯率為c,反向亦成立。輸入一堆這樣的三元組,再指定兩個幣種x y,問x->y的匯率是多少?請編程實現(xiàn),并給出時間、空間復(fù)雜度。注意:x->y的匯率是唯一的。

問題解答

回答1:

思路:三元組 -> 有向圖 -> 求任兩節(jié)點的路徑 -> 矩陣乘法或Floyd-Warshal。

比如獲取的外匯牌價是:

java - 已知外匯牌價折算匯率

第一行表示,每1元人民幣可以兌換0.116英鎊。每個三元組(c1, c2, r)對應(yīng)兩條帶權(quán)重的邊:c1 -> c2 weighted r和c2 -> c1 weighted 1/r。這些牌價實際上給出一個有向圖:

java - 已知外匯牌價折算匯率

這里假設(shè)給出的三元組不會導(dǎo)出矛盾,且有向圖是聯(lián)通的(不會有折算不到的情況)。這個有向圖寫成帶權(quán)重的鄰接矩陣就是:

java - 已知外匯牌價折算匯率

矩陣元素A[i,j]表示1單位i幣種可以兌換多少單位的j幣種。矩陣中的零代表目前匯率未知。

矩陣乘法

把矩陣A連乘可以逐步去除這些零元素。但是要把普通矩陣相乘中計算點積的加法替換成“取第一個大于零的數(shù),若沒有則為零”的操作。例如:(1,2,3).(0,3,2) = first_positive(1*0, 2*3, 3*2) = 6。

用“匯率乘法”計算A的乘方,A^k表示最多經(jīng)過k-1步折算得到的匯率表,一直算到A^k中沒有零停止。如果有n種貨幣,最多計算到A^(n-1)。

A^3:java - 已知外匯牌價折算匯率

觀察A^3的第一行,它是所有貨幣對人民幣的比價。任兩種貨幣的比價就是把它們對人民幣的比價的商。所以其實一開始用A的第一行參加計算就好:A[1] * A * ... * A (最多n-1次),每次進行的是行向量和矩陣的乘法,直到行的所有元素非零結(jié)束。這個計算的復(fù)雜度是O(n3)。

Floyd-Warshal

調(diào)整一下求最短路徑算法Floyd-Warshal中的遞推關(guān)系,也可以用于本題的匯率折算。Floyd-Warshal的復(fù)雜度是Θ(n3)。所以用矩陣乘法可能會更快一些。

for k from 1 to rows(A) for i from 1 to rows(A)for j from 1 to rows(A) if A[i][j] = 0 then // 貨幣 i, j 通過貨幣 k 折算 A[i][j] <- A[i][k] * A[k][j] end if

兩種算法都需要存儲匯率矩陣,所以的空間復(fù)雜度都是Θ(n2)。

回答2:

如果是提供三元組數(shù)組,生成一個計算 x->y 匯率的方式的最優(yōu)解: 有向圖最短路徑算法

如果是每次提供不同的三元組數(shù)組,只需要獲取一個結(jié)果就好: 有向圖尋路算法

回答3:

元組可以作為 dict 的 key

>>> ls = [(’人民幣’, ’美元’), (’人民幣’, ’歐元’), (’人民幣’, ’英鎊’)]>>> 匯率表 = dict(zip(ls,(6.,7.,8.))){(’人民幣’, ’美元’): 6.0, (’人民幣’, ’英鎊’): 8.0, (’人民幣’, ’歐元’): 7.0}>>> import pprint>>> pprint.pprint(匯率表,width=10){(’人民幣’, ’歐元’): 7.0, (’人民幣’, ’美元’): 6.0, (’人民幣’, ’英鎊’): 8.0}>>> 匯率表[(’人民幣’, ’美元’)]6.0回答4:

上面的有些算法寫得好復(fù)雜,寫個簡單的:

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>typedef struct node{ char *str; /*拼接后的字符串*/ float value; /*匯率值*/}node_t;int main(int argc, char *argv[]){ /*用戶輸入的一序列匯率對應(yīng)關(guān)系*/ static char const *buff[] = {'CNY','GBP','0.116','CNY','RUB','8.406','CNY','AUD','0.184','JPY','RUB','0.5072','USD','EUR', '0.9456'};int npairs = sizeof(buff)/sizeof(buff[0])/3; node_t * buf = calloc(1,npairs*sizeof(node_t)); if(NULL == buf){ printf('calloc is null !n');return(-1); } int i = 0; int j = 0; int len = 0; char tmp[16] = {’0’}; for(i=0;i<npairs*3; i+= 3){memset(tmp,’0’,sizeof(tmp));/*把兩個字符串進行拼接*/snprintf(tmp,16,'%s%s',buff[i],buff[i+1]);len = strlen(tmp);buf[j].str = calloc(1,sizeof(char)*(len+1));if(NULL != buf[j].str){ memmove(buf[j].str,tmp,len); buf[j].value = atof(buff[i+2]); j += 1;} } printf('please input the two node:n'); char input0[8] = {’0’}; char input1[8] = {’0’};scanf('%s%s',input0,input1); char data0[16] = {’0’}; char data1[16] = {’0’}; /*考慮正序和反序*/ snprintf(data0,16,'%s%s',input0,input1); snprintf(data1,16,'%s%s',input1,input0); for(i=0;i<j;++i){/*輪訓(xùn)匹配*/if((0==strcmp(buf[i].str,data0))){ printf('%s->%s %f n',input0,input1,buf[i].value); break;}if( 0==strcmp(buf[i].str,data1) ){ printf('%s->%s %f n',input1,input0,buf[i].value); break;} } if(i==j){ printf('can not find the pair n');} /* add the free*/ return 0;}

測試結(jié)果如下:

[field@learn]$./test_hello please input the two node:CNY GBPCNY->GBP 0.116000 [field@learn]$./test_hello please input the two node:GBP CNYCNY->GBP 0.116000 [field@learn]$

這里利用的是幣種名字的唯一性,兩個幣種拼接在一起必然也是唯一的。

標(biāo)簽: java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产字幕视频一区二区| 一级成人国产| 欧美精品影院| 在线精品一区二区| 蜜臀va亚洲va欧美va天堂| 精品欧美久久| 香蕉久久夜色精品国产| 99日韩精品| 日av在线不卡| 日韩欧美激情| 久久精品国产免费| 亚洲深夜视频| 亚洲无线一线二线三线区别av| 久久这里只有| 日韩伦理福利| 亚洲香蕉网站| 蜜臀久久99精品久久久久宅男| 亚洲免费影视| 欧美在线日韩| 中文在线资源| 午夜久久黄色| 日韩精品亚洲专区| 韩日一区二区| 久久亚洲国产| 亚洲91网站| 97精品国产福利一区二区三区| 久久狠狠婷婷| 亚洲毛片在线| 乱一区二区av| 午夜欧美视频| 欧美精品第一区| 99精品综合| 国产精品网在线观看| 亚洲激情中文在线| 国产精品丝袜在线播放| 1024精品久久久久久久久| 91精品尤物| 亚洲小说欧美另类婷婷| 国产精品视频一区二区三区综合| 日韩不卡在线| 国产欧美啪啪| 麻豆精品网站| 群体交乱之放荡娇妻一区二区| 日韩影院精彩在线| 精精国产xxxx视频在线播放| 日韩av三区| 91高清一区| 日韩国产综合| 国产精品久久久久久av公交车| 亚洲欧美不卡| 999久久久免费精品国产| 九九九精品视频| 国产欧美日韩精品一区二区免费| 蜜桃久久av| 亚洲精品2区| av高清不卡| 色综合五月天| 国内自拍视频一区二区三区| 亚洲视频电影在线| 国产精品三上| 99国产成+人+综合+亚洲欧美| 成人日韩在线观看| 日韩精品永久网址| 精品一二三区| 日韩电影二区| 久久91导航| 久久高清免费| 亚洲日本网址| 在线视频观看日韩| 午夜久久tv| 日本大胆欧美人术艺术动态| 在线综合亚洲| 综合一区二区三区| 中文亚洲欧美| 亚洲精品影视| 日韩久久一区| 欧美啪啪一区| 成人一二三区| 米奇777超碰欧美日韩亚洲| 日韩一区欧美| 亚洲黄色免费av| 怡红院精品视频在线观看极品| 亚洲欧美日韩国产| 视频一区日韩精品| 国产精品网址| 日韩三区免费| 亚洲综合激情在线| 精品午夜av| 日韩毛片视频| 人人精品亚洲| 亚洲精品人人| 91看片一区| 欧美日一区二区在线观看| 国产伦久视频在线观看| 欧美日韩精品一区二区视频| 亚洲人成毛片在线播放女女| 欧美激情一区| 亚洲精品一二三区区别| 欧美久久精品| 免费不卡中文字幕在线| 午夜久久av| 久久久久午夜电影| 亚洲精品观看| 国产精品a级| 久久99伊人| 樱桃视频成人在线观看| 国精品一区二区| 久久的色偷偷| 亚洲精品少妇| 婷婷成人综合| 国产亚洲久久| 日韩在线播放一区二区| 色综合www| 老色鬼精品视频在线观看播放| 九一精品国产| 久久影院午夜精品| 国产精品久久乐| 天堂av在线一区| 国产精品亚洲成在人线| 免费久久99精品国产自在现线| 麻豆网站免费在线观看| 午夜亚洲福利| 亚洲精品系列| 久久亚洲二区| 久久xxxx精品视频| 欧美不卡视频| 久久亚洲国产| 激情久久久久久久| 伊人久久亚洲美女图片| 久久美女性网| 久久精品主播| 精品91久久久久| 黑丝美女一区二区| 三上悠亚国产精品一区二区三区| 麻豆精品视频在线| 久久亚洲精精品中文字幕| 精品视频免费| 激情综合婷婷| 欧美韩日一区| 久久影院一区二区三区| 国产毛片精品久久| 国产精品久久久久9999高清| 91p九色成人| 911亚洲精品| 久久精品亚洲| 日本免费一区二区三区四区| 国产 日韩 欧美一区| 美女视频黄 久久| 久久中文字幕导航| 日韩国产高清在线| 免费一级欧美在线观看视频 | 欧美在线综合| 欧美片网站免费| www.九色在线| 国产偷自视频区视频一区二区| 亚洲有吗中文字幕| 69堂免费精品视频在线播放| 麻豆91精品视频| 久久久久免费| 欧美大黑bbbbbbbbb在线| 麻豆精品久久久| 91精品亚洲| 久久精品国产在热久久| 日韩国产在线一| 四虎精品一区二区免费| 中文在线一区| 麻豆亚洲精品| 久久国产乱子精品免费女| 91午夜精品| 99久久激情| 你懂的网址国产 欧美| 久久精品超碰| 亚洲91久久| 日韩一区二区免费看| 男女男精品网站| 国产精品调教| 日韩免费一区| 亚洲男女自偷自拍| 国产aa精品| 青青草精品视频| 亚洲特色特黄| 色偷偷偷在线视频播放| 婷婷视频一区二区三区| av资源新版天堂在线| 亚洲日产av中文字幕| 欧美日中文字幕| 久久精品三级| 欧美激情精品| 久久国产麻豆精品| 日韩精品福利一区二区三区| 香蕉成人av| 亚洲国产福利| 亚洲精品**中文毛片| 国产在线观看www| 日韩1区在线| 在线人成日本视频| 国产精品福利在线观看播放| 久久亚州av| 久久精品国产久精国产爱| 久久免费影院|