网站大量收购闲置独家精品文档,联系QQ:2885784924

基于婚姻算法的公司应聘程序编程.doc

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
根据稳定婚姻算法规律,对公司和应聘者应聘工作的编程。本程序是在原程序中设置好公司和应聘者对对方的满意顺序。在程序中为: 具体如下: #includeiostream #include stack using namespace std; #define NUM 3 #define NIL -1 int GetPositionFromCompany(int companyArray[][NUM], int company, int employee) { for(int i=0; iNUM; i++) if(companyArray[company][i] == employee) return i; return NIL; } void ChoosePartener(stackint employeeStack, int employeePos, int employeeArray[][NUM], int companyArray[][NUM], int employeePerfer[], int employeeStartPos[], int companyNow[]) { //选择自己名单上排在首位的公司 int perferCompany = employeeArray[employeePos][employeeStartPos[employeePos]]; //如果该公司没有接受过应聘,则接受该应聘者的申请 if(companyNow[perferCompany] == NIL) { companyNow[perferCompany] = employeePos; employeePerfer[employeePos] = perferCompany; } //如果已经有人向该公司申请,则判断其现在的应聘者有没有现在的好 else { int oldPos = GetPositionFromCompany(companyArray, perferCompany, companyNow[perferCompany]); int newPos = GetPositionFromCompany(companyArray, perferCompany, employeePos); if(oldPos newPos) { employeeStartPos[employeePos]++;//说明该公司更喜欢现在的应聘者,选心目中第二位 //加入求职行列 employeeStack.push(employeePos); } else //换应聘者 { //被拒绝的应聘者恢复求职身份 employeeStartPos[companyNow[perferCompany]]++; //加入求职行列 employeeStack.push(companyNow[perferCompany]); //将应聘的应聘者改为现在应聘者 companyNow[perferCompany] = employeePos; employeePerfer[employeePos] = perferCompany; } } } int main() { int employeeArray[NUM][NUM] = {{0,1,2},{1,2,0},{0,1,2}}; int companyArray[NUM][NUM] = {{0,1,2},{2,1,0},{0,2,1}}; int employeePerfer[NUM] = {0};//每个应聘者列心目中的公司 int employeeStartPos[NUM] = {0};//记录每位应聘者选取的是心中第几位的公司 int companyNow[NUM] = {NIL,NIL,NIL};//公司对应的应聘者 stackint employeeStack; // 还处于就职状态的应聘者 //进行第一轮迭代,每个应聘者都选择自己名单上排在首位的公司。 for(int pos=0; posNUM; pos++) { ChoosePartener(employeeStack, pos, employeeArray, companyArray, employeePerfer, employeeStartPos,companyNow); } while(employeeStack.size()!=0) { int employeePos = employeeStack.top(); emplo

文档评论(0)

185****7617 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档