GS穩定匹配演算法的實現C

2021-10-05 20:17:34 字數 1514 閱讀 4037

演算法導論課的課程作業

#include

using

namespace std;

//是否有單身的男人的判斷函式

bool

man_free

(bool

*man_state,

int n,

int&index)

}return

false;}

//該男人是否和所有女人求過婚

bool

man_no_date

(bool

**man_date,

int n,

int index)

}return

false;}

//尋找沒求過婚的女人中排名最高的女人

intfind_highest_woman

(bool

**man_date,

int*

*man,

int n,

int theman)

}return-1

;}intmain()

for(

int i =

0; i < n; i++)}

for(

int i =

0; i < n; i++)}

//初始化記錄男人女人單身狀態的bool陣列和記錄男人向女人求婚的陣列

bool

*man_state,

*woman_state;

bool

**date;

man_state =

newbool

[n];

for(

int i =

0; i < n; i++

) woman_state =

newbool

[n];

for(

int i =

0; i < n; i++

) date =

newbool

*[n]

;for

(int i =

0; i < n; i++

)for

(int i =

0; i < n; i++)}

//初始化記錄男人女人配對的陣列

int*woman_man_pair =

newint

[n];

for(

int i =

0; i < n; i++

)//gs演算法主體部分

int index =0;

while

(man_free

(man_state, n, index)

&&man_no_date

(date, n, index)

)else

else}}

for(

int i =

0; i < n; i++)}

}return0;

}

穩定匹配婚姻 c 版GS演算法

給出乙個 n 個男性的集合 m和 n 個女性的集合 w,找到乙個 穩定 匹配。每位男性根據對女性的心儀程度從高至低進行排名 每位女性根據對男性的心儀程度從高至低進行排名。初始讓所有男孩女孩處於空閒狀態 while 存在任意男孩m是空閒的,且沒有對每個女孩求過婚 選擇這個男孩m 假設w是男孩m還沒求過...

演算法 穩定匹配 C 版

由於學習需要,然後花費將近兩天時間研究這個問題,然後用c 描述出來,具體內容看下面 為了解決穩定匹配問題 stable matching problem 前輩們提出了gs演算法。下面就是博主使用gs演算法完成的本題,同時在研究過程中發現了乙個新的匹配思路,將會在下面發出來 不知道前輩們有沒有提出過 ...

穩定匹配演算法 C 語言實現 框架

給定 n 個男人,n個女人,每個男人都有一張對所有女人的偏愛表,每個女人都有一張對所有的男人的偏愛表,要求設計一演算法,產生一穩定匹配。匹配過程 初始化所有的男人和女人都是自由的 while 存在男人 m是自由的且還沒對每個女人都求過婚 選擇這樣乙個男人m 令w 是m 的優先表中m 還沒求過婚的最高...