給出乙個 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演算法完成的本題,同時在研究過程中發現了乙個新的匹配思路,將會在下面發出來 不知道前輩們有沒有提出過 ...