1. 程式人生 > >穩定婚姻匹配問題模板

穩定婚姻匹配問題模板

int fin 婚姻 mes def names esp 數組 else

用於:

給出所有男的和女的 對對方的好感度

要求不出現:

如果a與b匹配 c與d匹配 但是a相比b來說更加愛c 且c相比d來說更加愛a

主要需要處理的是兩個數組

boy[i][j] 第i個男的的第j個喜歡的女的的編號

girl[i][j] 第i個女的 對第j個男的的好感度

#include<bits/stdc++.h>
using namespace std;
#define N 1000

int rank1[N];//歸零
int match_boy[N],match_girl[N];//匹配情況
int boy[N][N],girl[N][N];//已說明
 
 
int
gs() { memset(match_boy,0,sizeof match_boy); memset(match_girl,0,sizeof match_girl); memset(rank1,0,sizeof rank1); while(flag) { flag=0; for(int i=1;i<=n;i++) { if(!match_boy[i]) {
int temp=boy[i][rank1[i]++]; if(!match_girl[temp]) match_boy[i]=temp,match_girl[temp]=i; else if( girl[temp][i]>girl[temp][match_girl[temp]] ) { match_boy[ match_girl[temp] ]=0; match_boy[i]
=temp; match_girl[temp]=i; } flag=1; } } } }

穩定婚姻匹配問題模板