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

2021-10-20 09:36:52 字數 1363 閱讀 3124

給出乙個 n 個男性的集合 m和 n 個女性的集合 w,找到乙個「穩定」匹配。

每位男性根據對女性的心儀程度從高至低進行排名;

每位女性根據對男性的心儀程度從高至低進行排名。

初始讓所有男孩女孩處於空閒狀態

while 存在任意男孩m是空閒的,且沒有對每個女孩求過婚

​ 選擇這個男孩m

​ 假設w是男孩m還沒求過婚中的最喜歡的女孩

​ if w也是空閒的

​ 讓w和m約會

​ else if w已經在跟m』約會了

​ if w更喜歡m』而不是m

​ 讓w和m』繼續約會,m保持空閒狀態

​ else w發現自己更喜歡m而不是當前約會物件m』

​ 讓m和w約會,m』變成空閒狀態

#include

using

namespace std;

//初始化二維陣列

void

chushi

(int

* a,

int n)

}//是否存在單身狗

bool

if_single

(int manlove,

int n)

return

false;}

//男子還沒示愛女性中最高的

intget_love

(int

* man,

int n,

int j)

}return m;

}//女子現任和小三選擇

bool

choose

(int a,

int b,

int m,

int n,

int*woman)

return

false;}

//實現

voidgs(

int* man,

int* woman,

int n,

int* manlove,

int* womanlove)

//女子不單身

else

//女子更喜歡小三

else}}

}}if(

!if_single

(manlove, n))}

for(

int i =

0; i < n; i++)}

intmain()

}//初始化陣列

chushi

(man,n)

;chushi

(woman, n);gs

(man, woman, n, manlove, womanlove)

;}

自己學習時所寫,僅供參考

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

演算法導論課的課程作業 include using namespace std 是否有單身的男人的判斷函式 bool man free bool man state,int n,int index return false 該男人是否和所有女人求過婚 bool man no date bool ma...

穩定婚姻匹配演算法

問題概述 n名男青年和n名女青年參加乙個相親會。經過了解,每名男青年在心目中都對所有女青年作了乙個排序,而每名女青年同樣也對男青年作了排序。問這些男女青年之間怎樣才能進行理想的配對。給出男青年和女青年的偏好矩陣 演算法求解過程 演算法設計 1 根據男性的偏好矩陣來進行遍歷 2 在男性的偏好矩陣中依次...

演算法 穩定匹配 C 版

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