【正文】
在[j+1,n]中找到比a[j]大最小的數(shù)編號(hào)為k [3]交換j和k位置上的數(shù) [4]將區(qū)間[j+1,n]中的數(shù)倒轉(zhuǎn)17. 全排列的項(xiàng)數(shù)與排列的轉(zhuǎn)換求排列在全排列中的項(xiàng)數(shù)(康托展開): F[i]表示排列中的第i位(從右往左)的右邊有多少個(gè)數(shù)比比它小 項(xiàng)數(shù)= 求全排列的第i項(xiàng)得排列 把i變?yōu)殡A乘進(jìn)制數(shù) if f[i]=I then begin f[i+1]:=f[i+1]+f[i] div I。,再驗(yàn)證其可行性(包括:編程復(fù)雜度、實(shí)現(xiàn)時(shí)間、時(shí)間復(fù)雜度、空間復(fù)雜度),可行性較低的要及時(shí)舍棄。,程序錯(cuò)誤時(shí),暫時(shí)放棄,過幾天再重打一遍。,特別是某些沒有樣例的題。,再編程。最小公倍數(shù)*最大公約數(shù)=兩數(shù)之積5. 卡特蘭數(shù)=鏈接 通項(xiàng)公式:f[n]== 遞推公式:f[n]=f[1]*f[n1]+f[2]*f[n2]+…+f[n1]*f[1] n=2 f[1]=1前十項(xiàng)1位2位3位4位5位6位7位8位9位10位125144213242914304862167966. floyed求最短路=鏈接 For k:= 1 to n do for i:= 1 to n do for j:= 1 to n do if f[i,k]+f[k,j]f[i,j] then f[i,j]:=f[i,k]+f[k,j]。[5]依次連接關(guān)鍵工程即為關(guān)鍵路徑。25. 最小生成樹Kruskal算法步驟:[1]將邊按長度從小到大排序[2]每次取出最小的邊,若不會(huì)構(gòu)成環(huán)則加入樹中,用并查集將兩端點(diǎn)合并 By zk