機試常用模板彙總(動態更新)

2021-09-24 09:50:02 字數 1741 閱讀 9462

題目:7-9 旅遊規劃 (25 分)

#include#include#include#include#include#includeusing namespace std;

const int maxn=510;

const int inf=1e5+10;

bool mark[maxn];

int dist[maxn];

int cos[maxn];//記錄當前結點到源點的最小花費

int n,m,s,d;

int ans_dis,ans_cost;

struct node;

vectoradj[maxn];

void djkstra(int s,int d)

else if(!mark[id]&&dist[id]==dist[u]+adj[u][j].distance&&cos[id]>cos[u]+adj[u][j].cost)

}} ans_dis=dist[d];

ans_cost=cos[d];

}int main()

; vectoradj[maxn];

int prim(int s)

}} return ans;

}int main()

};priority_queueheap; //使用優先順序佇列實現最小堆

(2)priority_queue中取隊首元素:top()

queue中取隊首元素:front()

(3)m#include#include#include#include#includeusing namespace std;

const int maxn=1010;

struct edge

};priority_queueheap; //使用優先順序佇列實現最小堆

int tree[maxn]; //並查集

/*尋找根結點的同時路徑壓縮*/

int find(int x)

/*合併兩個集合*/

int union(int a,int b)

int kruskal(int n)

;//node graph[maxn];

vectoradj[maxn];

//int e[maxn]; //邊上活動最早開始時間

//int l[maxn]; //邊上活動最晚開始時間

int ve[maxn]; //頂點上活動最早開始時間

int vl[maxn]; //頂點上活動最晚開始時間

int in[maxn]; // 每個結點的入度,為0時入隊

stacks;

bool topologicalsort(int n)

} /*每次將所有入度為0的結點入棧,拓撲序*/

while(!q.empty())

} //cout<<"size: "} //fill(vl,vl+maxn,inf);

//vl[u]=ve[u];

fill(vl,vl+maxn,ve[u]);

printf("%d\n",ve[u]);

/*元素逐個出棧,即為逆拓撲序列,構造vl陣列*/

while(!s.empty())

}}

int main()

while(!s.empty())

s.pop();

calc_path(n);

//cout<<"end!!"<} return 0;

}

機試複習,更新中

include incldue include include include include incude include1.棧與佇列 定義棧如下 stack stk 定義佇列如下 stack q 棧提供了如下操作 stk.empty 如果棧為空,返回true,否則返回false stk.size...

計算機機試指南 動態規劃

1.n階樓梯上樓問題 題目描述 n階樓梯上樓問題 一次可以走兩階或一階,問有多少種上樓方式。非遞迴 輸入 輸入包括乙個整數n 1 n 90 輸出 有多組測試資料,對於每組資料,輸出當樓梯階數為n時的上樓方式個數 演算法思想 到達第n階樓梯的方式有兩種 從第n 1階樓梯走一階 從第n 2階樓梯走兩階。...

常用演算法模板(持續更新)

你還在用迴圈累乘嗎?如果是的話,那麼你就要wa了,而且大數妥妥的超時 來來,本菜鳥帶你們學一下基於二進位制的快速冪 本例子我們用m的n次方 比如2 13,把13化為二進位制1101 那麼我們就可以把 21101 20001 20100 21000 int fun int n return sum 簡...