Bacon Number 兩種解法

2022-04-07 09:26:49 字數 1439 閱讀 8008

view code

/*

【題目**】

&cid=567

【題目分析】

與longth way 類似

這個好象就是傳說中的六度人脈,你只要通過六度人脈就可以找到世界上的任何乙個人。

假設乙個人一生會認識n個人,那n+n^1+n^2+n^3+n^4+n^5+n^6>=世界總人數。

給定一些邊確定乙個圖,即給定一些點之間的連通情況,求出各點到0的最短路徑

【思路分析】

1.鄰接表構圖

2.以0為樹根,層次遍歷,求出其他各點的深度 即為所求

【小小心得】

剛開始還去用struct表示node

其實只用乙個鄰接表就行了 鄰接表果然好東西呀~

*/#include

#include

#include

using

namespace

std;

#define max 101

intmain()

int layer[max] = ;//

深度 bool visit[max] = ;//

是否被訪問過

queue

q;q.push(0);

while (!q.empty())}}

for (int i = 1; i < max; ++i)

if (layer[i]) cout << i << ":"

<< layer[i] <

cout

<< "

---"

<}}

view code

/*

受ry提示,此題有一種比較容易敲出來的演算法,於是考試的時候就用了這種哈哈。

第二種思路:floyd-warshall演算法(它真的叫猥瑣演算法嗎??)

floyd-warshall演算法是解決任意兩點間的最短路徑的一種演算法。

通常可以在任何圖中使用,包括有向圖、帶負權邊的圖。

複雜度比bfs的要高 o(n^3)

思路很容易,3個迴圈尋找任意兩點間的最小值。

【小小心得】

除非是對陣列清零,否則不要輕易用memset.

*/#include

using

namespace

std;

#define max 101

ints[max][max];

intmain()

//floyd-warshall演算法特徵: 3個迴圈

for (int k = 0; k < max; ++k)}}

}//輸出其他各點到0的距離

for (int i = 1; i < max; ++i)

cout

<< "

---"

<}}

The Longest Path 兩種解法

view code 題目 cid 567 題目分析 給定一些邊確定乙個圖,即給定一些點之間的連通情況,保證給定的圖沒有迴路,要求輸出該圖存在的最長路徑。思路分析 根據給定資訊構造圖,用鄰接表表示。鄰接矩陣明顯很麻煩且效率不高 將每乙個頂點看成是樹根,求出樹的高度。得到一系列樹的高度,最大的那個就是圖...

FBI樹兩種解法

問題描述 我們可以把由 0 和 1 組成的字串分為三類 全 0 串稱為b串,全 1 串稱為i串,既含 0 又含 1 的串則稱為f串。fbi樹是一種二叉樹,它的結點型別也包括f結點,b結點和i結點三種。由乙個長度為2n的 01 串s可以構造出一棵fbi樹t,遞迴的構造方法如下 1 t的根結點為r,其型...

八皇后的兩種解法

public class eightqueue return true 遞迴解法 public int cal int i if x i 8 i 8 遞迴到了最後乙個地方 尋找到了合適位置,向下一列尋找位置 else if i 8 x i 8 else 非遞迴解法 public int calcul...