本文共 755 字,大约阅读时间需要 2 分钟。
此条博客大部分参考于
我只是自己对这段代码按照自己的想法解释一下,经供参考。#include#include #define MAX 100int n,m;bool line[MAX][MAX];//这个代表男生和女生的连线程度bool used[MAX];//这个代表该女生是否被访问过int girl[MAX];//这个代表该女生对应的男生是哪一个bool find(int x){ for(int j=1;j<=m;j++)//扫描每一个妹子 if(line[x][j]==true&&used[j]==false) //如果有暧昧关系,并且没有被标记过 { used[j]=true;//以便于递归的时候,知道这个妹子被看中过。(懂了) if(girl[j]==0||find(girl[j])) //名花无主或者能挪出个位置来(也就是那个男生对应的女生有其他的),这里使用递归 { girl[j]=x; return true; } } return false;}int main() { int cnt=0; printf("请分别输入男生和女生的数量:"); scanf("%d %d",&n,&m); int t;//有t对暧昧关系 printf("请输入有几对暧昧关系:"); scanf("%d",&t); printf("请输入%d对暧昧关系:\n",t); int x,y; memset(line,false,sizeof(line)); memset(girl,0,sizeof(girl));//初始化girl没有和任何人配对 for(int i=0;i
转载地址:http://jufen.baihongyu.com/