我正在用两个解决一个匹配vectors
问题class
class matching
{
public:
int n;
char match;
};
这是我试图实现的算法:
int augment(vector<matching> &left, vector<matching> &right)
{
while(there's no augmenting path)
if(condition for matching)
<augment>
return "number of matching";
}
对于粗略匹配,如果left[i]
与 匹配right[j]
,则left[i].n = j
、left[i].match ='M'
、right[j].n = i
和right[j].match = 'M'
不匹配的有成员n = -1
和match = 'U'
在找到增广路径时,如果一个存在另一个(i,j),那么我们将match
不匹配的成员从'M'
to更改为,'U'
并且n = -1
与增广路径匹配的两个match
在我们更改时将其成员更改为“A”他们的成员n
根据他们的指数。
我不知道这是否是解决这个问题的正确方法,这是我第一次尝试最大匹配,我已经阅读了很多文章并在线观看了教程,但我无法让我的“代码”正常运行。
我不需要代码,我可以编写我的代码。我只是想一步一步地理解这个算法。如果有人能给我一个像我上面尝试过的算法,我将不胜感激。另外,如果从那以后我一直走错方向,请纠正我。