7 32 哥尼斯堡的「七橋問題」 25 分

2021-09-20 15:21:50 字數 1304 閱讀 7873

哥尼斯堡是位於普累格河上的一座城市,它包含兩個島嶼及連線它們的七座橋,如下圖所示。

可否走過這樣的七座橋,而且每橋只走過一次?瑞士數學家尤拉(leonhard euler,1707—1783)最終解決了這個問題,並由此創立了拓撲學。

這個問題如今可以描述為判斷尤拉迴路是否存在的問題。尤拉迴路是指不令筆離開紙面,可畫過圖中每條邊僅一次,且可以回到起點的一條迴路。現給定乙個無向圖,問是否存在尤拉迴路?

輸入格式:

輸入第一行給出兩個正整數,分別是節點數n (1≤n≤1000)和邊數m;隨後的m行對應m條邊,每行給出一對正整數,分別是該條邊直接連通的兩個節點的編號(節點從1到n編號)。

輸出格式:

若尤拉迴路存在則輸出1,否則輸出0。

輸入樣例1:

6 10

1 22 3

3 14 5

5 66 4

1 41 6

3 43 6

輸出樣例1:

1輸入樣例2:

5 81 2

1 32 3

2 42 5

5 35 4

3 4輸出樣例2:

0解答:第一次做是直接暴力遍歷(假裝人在手動的走,不斷遞迴,每一條路徑),後來提交發現,超時2個點。。。。。。。。然後才加以改動,後來發現其中只要判斷奇點數和圖是否連通,就解決了

不超時的正確解答:

#include#include#include#define max 1001

int n;

int matrix[max][max]=};

int start[max]=;

int isv[max]=;

void islink(int pos);

int main()

for(i=0; i超時的遞迴遍歷做法是這樣的:

#include#include#include#define max 1001

int matrix[max][max]=};

int n,times=0;

void ergodic(int y,int end);

int main()

for(i=0; iprintf("0\n");

return 0;

}void ergodic(int y,int end)

int i,j,flag;

if(times==2)}}

if(flag)else

}for(i=0; i}

}

7 32 哥尼斯堡的「七橋問題」(25 分)

7 87 哥尼斯堡的 七橋問題 25 分 哥尼斯堡是位於普累格河上的一座城市,它包含兩個島嶼及連線它們的七座橋,如下圖所示。可否走過這樣的七座橋,而且每橋只走過一次?瑞士數學家尤拉 leonhard euler,1707 1783 最終解決了這個問題,並由此創立了拓撲學。這個問題如今可以描述為判斷尤...

哥尼斯堡的「七橋問題」 25 分 DFS

哥尼斯堡是位於普累格河上的一座城市,它包含兩個島嶼及連線它們的七座橋,如下圖所示。可否走過這樣的七座橋,而且每橋只走過一次?瑞士數學家尤拉 leonhard euler,1707 1783 最終解決了這個問題,並由此創立了拓撲學。這個問題如今可以描述為判斷尤拉迴路是否存在的問題。尤拉迴路是指不令筆離...

7 1 哥尼斯堡的「七橋問題」 (25 分)

哥尼斯堡是位於普累格河上的一座城市,它包含兩個島嶼及連線它們的七座橋,如下圖所示。可否走過這樣的七座橋,而且每橋只走過一次?瑞士數學家尤拉 leonhard euler,1707 1783 最終解決了這個問題,並由此創立了拓撲學。這個問題如今可以描述為判斷尤拉迴路是否存在的問題。尤拉迴路是指不令筆離...