七橋問題和一筆畫

2022-06-26 17:09:13 字數 2782 閱讀 5533

依然用vector 去構建圖   ,   這個已經會了 應該去學一點別的了  不錯不錯  ,

這次用vector  構圖  超時了  ,   如果以後做題的話  ,   看到可能會超時的題  就應該先避開  看看別的再說  

先付上  超時**   雖然超時了  不過答案應該是正確的 

1

/*認真體會 搜尋不是一種形式 而是一種思想 */2

/*判斷圖 是否連同 我想的乙個簡單粗暴的辦法就是 分別從每個點都走一次 看看有沒有 那一次 能把所有的點都走一遍的

*/3 #include4 #include5 #include

6using

namespace

std;

7 vectorv[1005];8

int sum,visited[1005],q1,q; //

用於判斷這個圖 是否走過

9void dfs(int

n)10

25 visited[v[n][i]]=0

;26 sum-=v[n][i];27}

28}29}

30int

main()

3143 q=(1+a)*a; //

偶數和奇數相乘 一定是偶數

44 q/=2;45

for(sum=n,q1=0,i=1;i<=n;i++) //

分別從 每乙個節點開始 搜尋 看看圖是否連同

4653

if(q1==1

)54 printf("

yes\n");

55else

56 printf("

no\n");

57}58return0;

59 }

一筆畫問題:  一 : 只有偶點 可以一筆畫並且可以以任意乙個點 作為起點 

二 : 只有兩個奇點  可以一筆畫出 但是必須分別 以 這兩個奇點  為起點  開始  

三 : 奇數點超過兩個的時候 不能一筆畫

1

/*一直糾結到現在 然而 還是沒有做出來 , 顯示的是 答案錯誤

*/2 #include3 #include4 #include

5using

namespace

std;

6 vectorv[1005];7

int n,m,mark[1005],visited[1005];8

void dfs(inti)9

19}20}

21int

main()

2241

int q=1,count=0;42

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

4349

if(flag&&(count==0||count==2)) //

5053

else

5457

}58 }

就那一下下我要放棄了 , 然而掙扎了最後一次 成功了 兩天的努力沒有白費 , 以後寫變數的時候一定 考慮作用範圍  函式 條理清晰 不互相干擾

1

/*不放棄 , 多學習 , 多借鑑 ,堅持自己的方法 , 不成為別人 , 不迷失自己

*/2 #include3 #include4 #include

5using

namespace

std;

6 vectorv[1005];7

int n,m,mark[1005],visited[1005];8

void dfs(inti)9

17}18}

19int

main()

2039 dfs(1

);40

int q=1,count=0;41

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

4248

if(q&&(count==0||count==2)) //

4952

else

5356

}57 }

下面開始用並查集做  (因為是第一次做  先上我學習的乾貨 )

1

/*已經做過了優化

*/2 #include3 #include4 #include5

int sum,father[1001],a[1001];6

int find(int x) //

做了時間上的優化 ,但是 在空間複雜度上比較高713

void merge(int x,int y) //

做了時間複雜度上的優化 讓並查集的 深度盡量 淺

1429}30

intmain()

3147

for(i=1;i<=p;i++)

53if(j==1&&(s==0||s==2

))54 printf("

yes\n");

55else

56 printf("

no\n");

57}58return0;

59 }

一筆畫問題

一筆畫問題是在6x6的棋盤上分布著若干點,從紅色起點開始依次不重複地經過每個白色點,已經經過的點可以跨越過去。程式採用深度搜尋,從紅色點開始分別往上 往下 往左和往右邁出第一步,然後沿著當前方向,分別探測左邊 前面和右邊的下一結點,標記已經經過的節點為空。探測到左邊有節點就左轉,然後直行到該節點 如...

一筆畫問題

描述 判斷乙個圖是否能夠用一筆畫下來.規定,所有的邊都只能畫一次,不能重複畫。輸入第一行只有乙個正整數n n 10 表示測試資料的組數。每組測試資料的第一行有兩個正整數p,q p 1000,q 2000 分別表示這個畫中有多少個頂點和多少條連線。點的編號從1到p 隨後的q行,每行有兩個正整數a,b ...

一筆畫問題

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 zyc從小就比較喜歡玩一些小遊戲,其中就包括畫一筆畫,他想請你幫他寫乙個程式,判斷乙個圖是否能夠用一筆畫下來。規定,所有的邊都只能畫一次,不能重複畫。輸入 第一行只有乙個正整數n n 10 表示測試資料的組數。每組測試資料的第一...