亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 數(shù)據(jù)結(jié)構(gòu)算法集錦.txt

?? 數(shù)據(jù)結(jié)構(gòu)算法集錦:包括大量常用算法
?? TXT
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):

                【數(shù)據(jù)結(jié)構(gòu)】算法集錦 

                        一、數(shù)論算法
                        1.求兩數(shù)的最大公約數(shù)
                        function  gcd(a,b:integer):integer;
                         begin 
                           if b=0 then gcd:=a
                             else gcd:=gcd (b,a mod b);
                         end ;
                        2.求兩數(shù)的最小公倍數(shù)
                        function  lcm(a,b:integer):integer;
                         begin
                           if a<b then swap(a,b);
                           lcm:=a;
                           while lcm mod b>0 do inc(lcm,a);
                         end;
                        3.素?cái)?shù)的求法
                        A.小范圍內(nèi)判斷一個(gè)數(shù)是否為質(zhì)數(shù):
                         function prime (n: integer): Boolean;
                           var I: integer;
                           begin
                             for I:=2 to trunc(sqrt(n)) do
                               if n mod I=0 then begin 
                          prime:=false; exit;
                        end;
                             prime:=true;
                           end;
                        B.判斷l(xiāng)ongint范圍內(nèi)的數(shù)是否為素?cái)?shù)(包含求50000以內(nèi)的素?cái)?shù)表):
                           procedure getprime;
                             var 
                               i,j:longint;
                               p:array[1..50000] of boolean;
                              begin
                                fillchar(p,sizeof(p),true);
                         p[1]:=false;
                         i:=2;
                         while i<50000 do begin
                           if p[i] then begin
                             j:=i*2;
                             while j<50000 do begin
                               p[j]:=false;
                               inc(j,i);
                             end;
                            end;
                            inc(i);
                          end;
                          l:=0;
                          for i:=1 to 50000 do
                            if p[i] then begin
                              inc(l);pr[l]:=i;
                           end;
                        end;{getprime}
                           
                            function prime(x:longint):integer;
                              var i:integer;
                              begin
                                prime:=false;
                         for i:=1 to l do
                           if pr[i]>=x then break
                             else if x mod pr[i]=0 then exit;
                         prime:=true;
                              end;{prime}

                        二、圖論算法
                        1.最小生成樹
                         A.Prim算法:
                            procedure prim(v0:integer);
                              var
                                lowcost,closest:array[1..maxn] of integer;
                         i,j,k,min:integer;
                              begin
                                for i:=1 to n do begin
                           lowcost[i]:=cost[v0,i];
                           closest[i]:=v0;
                          end;
                         for i:=1 to n-1 do begin
                           {尋找離生成樹最近的未加入頂點(diǎn)k}
                           min:=maxlongint;
                           for j:=1 to n do
                             if (lowcost[j]<min) and (lowcost[j]<>0) then begin
                               min:=lowcost[j];
                               k:=j;
                             end;
                           lowcost[k]:=0; {將頂點(diǎn)k加入生成樹}
                              {生成樹中增加一條新的邊k到closest[k]}
                           {修正各點(diǎn)的lowcost和closest值}
                           for j:=1 to n do
                             if  cost[k,j]<lwocost[j] then begin
                               lowcost[j]:=cost[k,j];
                               closest[j]:=k;
                             end;
                           end;
                        end;{prim}
                        B.Kruskal算法:(貪心)
                         按權(quán)值遞增順序刪去圖中的邊,若不形成回路則將此邊加入最小生成樹。
                        function find(v:integer):integer; {返回頂點(diǎn)v所在的集合}
                         var i:integer;
                         begin
                           i:=1;
                           while (i<=n) and (not v in vset[i]) do inc(i);
                           if i<=n then find:=i else find:=0;
                         end;
                        procedure kruskal;
                         var
                           tot,i,j:integer;
                         begin
                           for i:=1 to n do 
vset[i]:=[i];{初始化定義n個(gè)集合,第I個(gè)集合包含一個(gè)元素I}
                        p:=n-1; q:=1; tot:=0; {p為尚待加入的邊數(shù),q為邊集指針}
                        sort;
                        {對(duì)所有邊按權(quán)值遞增排序,存于e[I]中,e[I].v1與e[I].v2為邊I所連接的兩個(gè)頂點(diǎn)的序號(hào),e[I].len為第I條邊的長(zhǎng)度}
                           while p>0 do begin
                             i:=find(e[q].v1);j:=find(e[q].v2);
                             if i<>j then begin
                               inc(tot,e[q].len);
                               vset[i]:=vset[i]+vset[j];vset[j]:=[];
                               dec(p);
                             end;
                             inc(q);
                           end;
                           writeln(tot);
                         end;
                        2.最短路徑
                         A.標(biāo)號(hào)法求解單源點(diǎn)最短路徑:
                           var
                             a:array[1..maxn,1..maxn] of integer;
                             b:array[1..maxn] of integer; {b[i]指頂點(diǎn)i到源點(diǎn)的最短路徑}
                             mark:array[1..maxn] of boolean;
                           procedure bhf;
                             var
                               best,best_j:integer;
                             begin
                               fillchar(mark,sizeof(mark),false);
                            mark[1]:=true; b[1]:=0;{1為源點(diǎn)}
                            repeat
                              best:=0;
                                for i:=1 to n do
                                 If mark[i] then {對(duì)每一個(gè)已計(jì)算出最短路徑的點(diǎn)}
                                  for j:=1 to n do
                                    if (not mark[j]) and (a[i,j]>0) then 
                                   if (best=0) or (b[i]+a[i,j]<best) then begin
                                     best:=b[i]+a[i,j];  best_j:=j;
                                  end;
                               if best>0 then begin
                                 b[best_j]:=best;mark[best_j]:=true;
                               end;
                             until best=0;
                             end;{bhf}
                          B.Floyed算法求解所有頂點(diǎn)對(duì)之間的最短路徑:
                             procedure floyed;
                               begin
                        for I:=1 to n do
                         for j:=1 to n do
                         if a[I,j]>0 then p[I,j]:=I else p[I,j]:=0; 
                        {p[I,j]表示I到j(luò)的最短路徑上j的前驅(qū)結(jié)點(diǎn)}
                          for k:=1 to n do {枚舉中間結(jié)點(diǎn)}
                            for i:=1 to n do
                              for j:=1 to n do
                                if a[i,k]+a[j,k]<a[i,j] then begin
                               a[i,j]:=a[i,k]+a[k,j];
                                     p[I,j]:=p[k,j];
                             end;
                              end;
                        C. Dijkstra 算法:
                        var
                             a:array[1..maxn,1..maxn] of integer;
                             b,pre:array[1..maxn] of integer; 
                        {pre[i]指最短路徑上I的前驅(qū)結(jié)點(diǎn)}
                             mark:array[1..maxn] of boolean;
                        procedure dijkstra(v0:integer);
                         begin
                           fillchar(mark,sizeof(mark),false);
                           for i:=1 to n do begin
                             d[i]:=a[v0,i];
                             if d[i]<>0 then pre[i]:=v0 else pre[i]:=0;
                           end;
                           mark[v0]:=true;
                           repeat   {每循環(huán)一次加入一個(gè)離1集合最近的結(jié)點(diǎn)并調(diào)整其他結(jié)點(diǎn)的參數(shù)}
                             min:=maxint; u:=0; {u記錄離1集合最近的結(jié)點(diǎn)}
                             for i:=1 to n do
                               if (not mark[i]) and (d[i]<min) then begin
                                 u:=i; min:=d[i];
                             end;
                             if u<>0 then begin
                               mark[u]:=true; 
                               for i:=1 to n do
                                if (not mark[i]) and (a[u,i]+d[u]<d[i]) then 
                        begin
                                  d[i]:=a[u,i]+d[u];
                                  pre[i]:=u;
                               end;
                             end;
                           until u=0;
                         end;
                        3.計(jì)算圖的傳遞閉包
                        Procedure Longlink;
                         Var
                        T:array[1..maxn,1..maxn] of boolean;
                         Begin
                        Fillchar(t,sizeof(t),false);
                        For k:=1 to n do
                         For I:=1 to n do
                           For j:=1 to n do T[I,j]:=t[I,j] or (t[I,k] and 
                        t[k,j]);
                         End;

                        4.無(wú)向圖的連通分量
                        A.深度優(yōu)先
                         procedure dfs ( now,color: integer);
                            begin
                              for i:=1 to n do
                               if a[now,i] and c[i]=0 then begin {對(duì)結(jié)點(diǎn)I染色}
                                 c[i]:=color;
                                 dfs(I,color);
                               end;
                        end;
                        B 寬度優(yōu)先(種子染色法)

                        5.關(guān)鍵路徑
                        幾個(gè)定義: 頂點(diǎn)1為源點(diǎn),n為匯點(diǎn)。
                        a. 頂點(diǎn)事件最早發(fā)生時(shí)間Ve[j], Ve [j] = max{ Ve [j] + w[I,j] },其中Ve 
                        (1) = 0;
                        b. 頂點(diǎn)事件最晚發(fā)生時(shí)間 Vl[j], Vl [j] = min{ Vl[j] – w[I,j] },其中 
                        Vl(n) = Ve(n);
                        c. 邊活動(dòng)最早開始時(shí)間 Ee[I], 若邊I由<j,k>表示,則Ee[I] = Ve[j];
                        d. 邊活動(dòng)最晚開始時(shí)間 El[I], 若邊I由<j,k>表示,則El[I] = Vl[k] – w[j,k];
                        若 Ee[j] = El[j] ,則活動(dòng)j為關(guān)鍵活動(dòng),由關(guān)鍵活動(dòng)組成的路徑為關(guān)鍵路徑。
                        求解方法:
                        a. 從源點(diǎn)起topsort,判斷是否有回路并計(jì)算Ve;
                        b. 從匯點(diǎn)起topsort,求Vl;
                        c. 算Ee 和 El;

                        6.拓?fù)渑判?                        找入度為0的點(diǎn),刪去與其相連的所有邊,不斷重復(fù)這一過(guò)程。
                        例  尋找一數(shù)列,其中任意連續(xù)p項(xiàng)之和為正,任意q 項(xiàng)之和為負(fù),若不存在則輸出NO.

                        7.回路問(wèn)題
                        Euler回路(DFS)
                        定義:經(jīng)過(guò)圖的每條邊僅一次的回路。(充要條件:圖連同且無(wú)奇點(diǎn))
                        Hamilton回路
                        定義:經(jīng)過(guò)圖的每個(gè)頂點(diǎn)僅一次的回路。
                        一筆畫
                        充要條件:圖連通且奇點(diǎn)個(gè)數(shù)為0個(gè)或2個(gè)。
                        9.判斷圖中是否有負(fù)權(quán)回路 Bellman-ford 算法
                         x[I],y[I],t[I]分別表示第I條邊的起點(diǎn),終點(diǎn)和權(quán)。共n個(gè)結(jié)點(diǎn)和m條邊。
                          procedure bellman-ford
                           begin
                        for I:=0 to n-1 do d[I]:=+infinitive;
                        d[0]:=0;
                        for I:=1 to n-1 do
                         for j:=1 to m do {枚舉每一條邊}
                           if d[x[j]]+t[j]<d[y[j]] then d[y[j]]:=d[x[j]]+t[j];
                        for I:=1 to m do
                         if d[x[j]]+t[j]<d[y[j]] then return false else return 
                        true;
                           end;
                        10.第n最短路徑問(wèn)題
                        *第二最短路徑:每舉最短路徑上的每條邊,每次刪除一條,然后求新圖的最短路徑,取這些路徑中最短的一條即為第二最短路徑。
                        *同理,第n最短路徑可在求解第n-1最短路徑的基礎(chǔ)上求解。
                        [color=#0000FF]三、背包問(wèn)題[/color]
                        *部分背包問(wèn)題可有貪心法求解:計(jì)算Pi/Wi
                          數(shù)據(jù)結(jié)構(gòu):
                            w[i]:第i個(gè)背包的重量;
                            p[i]:第i個(gè)背包的價(jià)值;
                        1.0-1背包: 每個(gè)背包只能使用一次或有限次(可轉(zhuǎn)化為一次):
                        A.求最多可放入的重量。
                        NOIP2001 裝箱問(wèn)題 
                           有一個(gè)箱子容量為v(正整數(shù),o≤v≤20000),同時(shí)有n個(gè)物品(o≤n≤30),每個(gè)物品有一個(gè)體積 
                        (正整數(shù))。要求從 n 個(gè)物品中,任取若千個(gè)裝入箱內(nèi),使箱子的剩余空間為最小。
                        l 搜索方法
                           procedure search(k,v:integer); {搜索第k個(gè)物品,剩余空間為v}
                           var i,j:integer;
                           begin
                             if v<best then best:=v;
                             if v-(s[n]-s[k-1])>=best then exit; 
{s[n]為前n個(gè)物品的重量和}
                             if k<=n then begin
                               if v>w[k] then search(k+1,v-w[k]);
                               search(k+1,v);
                             end;
                           end;
                        l DP
                        F[I,j]為前i個(gè)物品中選擇若干個(gè)放入使其體積正好為j的標(biāo)志,為布爾型。
                        實(shí)現(xiàn):將最優(yōu)化問(wèn)題轉(zhuǎn)化為判定性問(wèn)題
                        f [I, j] = f [ i-1, j-w[i] ] (w[I]<=j<=v)       

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性淫爽ww久久久久无| 欧美色爱综合网| 久久国产视频网| 国产欧美一区二区三区网站| 91精品综合久久久久久| 91官网在线观看| 日本乱人伦aⅴ精品| av电影天堂一区二区在线观看| 美国精品在线观看| 亚洲成人av免费| 亚洲一区二区三区中文字幕| 亚洲欧洲日韩一区二区三区| 国产日韩综合av| 337p粉嫩大胆噜噜噜噜噜91av| 欧美精品18+| 欧美三级中文字幕| 欧美精品 日韩| 91精品国产福利| 欧美久久一二三四区| 欧美熟乱第一页| 91香蕉视频mp4| 成人丝袜视频网| 成人性生交大片免费| 成人在线视频一区二区| 从欧美一区二区三区| 成人小视频免费观看| aaa欧美色吧激情视频| va亚洲va日韩不卡在线观看| a亚洲天堂av| 不卡av在线免费观看| 欧美日韩电影一区| 日韩一级高清毛片| 欧美大黄免费观看| 久久久噜噜噜久噜久久综合| 久久免费电影网| 日本一区二区三区免费乱视频| 久久精品亚洲乱码伦伦中文| 337p粉嫩大胆噜噜噜噜噜91av| 久久精品亚洲精品国产欧美kt∨| 国产无遮挡一区二区三区毛片日本| 国产欧美一区二区精品性色 | 欧美日韩国产综合一区二区| 精品视频在线免费| 日韩欧美国产三级电影视频| 国产亚洲一区二区三区在线观看| 国产精品久久久久7777按摩 | 亚洲天堂av一区| 亚洲综合一区二区三区| 亚洲chinese男男1069| 偷偷要91色婷婷| 激情久久五月天| 成人不卡免费av| 欧美视频三区在线播放| 欧美mv和日韩mv国产网站| 中文字幕巨乱亚洲| 伊人开心综合网| 青青草精品视频| 成人性生交大片免费看在线播放| 在线观看欧美精品| 精品国产免费人成电影在线观看四季| 久久精品在这里| 亚洲午夜精品17c| 久久99精品网久久| 91免费在线视频观看| 91麻豆精品国产91久久久久久| 久久久综合激的五月天| 亚洲综合精品自拍| 国产在线看一区| 99久久久精品| 欧美日韩国产一级片| 久久伊人中文字幕| 亚洲永久免费视频| 国产精品一二三四| 欧美男生操女生| 国产精品欧美综合在线| 五月激情六月综合| 久久99日本精品| 欧美性一二三区| 国产三级一区二区三区| 日韩影院在线观看| 91网站视频在线观看| 久久免费视频一区| 午夜精品福利一区二区三区av | 国产在线观看一区二区| 欧美在线一区二区| 久久女同性恋中文字幕| 亚洲成人动漫精品| 99精品视频在线观看| 欧美成人a在线| 狠狠色狠狠色综合系列| 欧美这里有精品| 国产精品三级av在线播放| 美洲天堂一区二卡三卡四卡视频| 91亚洲男人天堂| 国产亚洲成av人在线观看导航| 亚洲电影一级黄| 91在线精品一区二区| xnxx国产精品| 青草国产精品久久久久久| 日本丰满少妇一区二区三区| 精品久久人人做人人爰| 亚洲超丰满肉感bbw| 91一区二区三区在线观看| 久久久噜噜噜久久中文字幕色伊伊 | 久久精品夜色噜噜亚洲aⅴ| 日韩vs国产vs欧美| 欧美午夜精品理论片a级按摩| 国产精品久久久久桃色tv| 国内精品久久久久影院薰衣草| 91精品国产品国语在线不卡| 亚洲高清久久久| 欧美午夜在线观看| 亚洲精品写真福利| 欧美日韩国产高清一区二区| 青草国产精品久久久久久| 精品久久人人做人人爰| 国产高清精品在线| 国产精品国产三级国产普通话三级 | 美女性感视频久久| 久久尤物电影视频在线观看| 粉嫩一区二区三区在线看| 中文字幕在线一区免费| 欧美伊人精品成人久久综合97| 天天色天天爱天天射综合| 精品成a人在线观看| 成人午夜视频网站| 亚洲一区二三区| 日韩精品一区国产麻豆| 成人免费看的视频| 一区二区在线电影| 在线综合视频播放| 国产一区二区三区久久久| 中文字幕亚洲一区二区av在线| 欧洲av一区二区嗯嗯嗯啊| 免费欧美在线视频| 国产精品视频看| 欧美日韩夫妻久久| 国产精品综合二区| 亚洲精品视频免费观看| 日韩一区二区在线观看视频| 国产精品18久久久久久久久久久久| 亚洲欧美自拍偷拍色图| 欧美网站一区二区| 精品在线观看免费| 中文字幕在线不卡| 91精品国产色综合久久不卡蜜臀| 国产精品香蕉一区二区三区| 亚洲男人的天堂网| 精品国产自在久精品国产| 色综合天天视频在线观看| 蜜桃av一区二区在线观看| 国产精品福利一区二区| 制服丝袜av成人在线看| 成人午夜又粗又硬又大| 日韩av在线发布| 国产精品三级av在线播放| 欧美一级黄色片| 日韩欧美国产综合在线一区二区三区| 国产精华液一区二区三区| 亚洲成人7777| 国产精品超碰97尤物18| 精品久久久三级丝袜| 欧洲日韩一区二区三区| 成人免费视频一区| 久久精品国产网站| 亚洲一级二级三级在线免费观看| 久久精品人人做人人爽人人| 欧美疯狂性受xxxxx喷水图片| 成人av电影在线| 久久99最新地址| 日韩二区三区四区| 一区二区三区四区在线免费观看 | 美国毛片一区二区| 亚洲靠逼com| 国产拍揄自揄精品视频麻豆| 日韩欧美亚洲一区二区| 欧美系列在线观看| 97久久超碰精品国产| 国产寡妇亲子伦一区二区| 琪琪一区二区三区| 午夜欧美一区二区三区在线播放| 中文一区在线播放| 久久久久国产免费免费| 日韩视频123| 欧美日韩一区二区三区四区五区| av不卡在线观看| 成人精品国产免费网站| 国产精品亚洲专一区二区三区| 免费的国产精品| 日韩黄色小视频| 午夜免费欧美电影| 亚洲国产欧美日韩另类综合| 亚洲免费观看高清完整| 最新中文字幕一区二区三区| 亚洲国产精品ⅴa在线观看| 精品国产伦理网| 久久综合丝袜日本网| 欧美成人一区二区| 精品久久五月天| 精品国产a毛片|