1432
来源:互联网 发布:售电软件 编辑:程序博客网 时间:2024/05/21 07:08
匈牙利算法只需要以每个节点为起点找一次增广路即可求得最大匹配,寻找增广路的复杂度为O(E),总的复杂度为O(VE)
{附上一段我写的朴素Hungary代码}
5、简要
#include <iostream>
#include <assert.h>
using namespace std;
//二分查找,非递归形式
int binarySearch(int *a, int b, int e, int v)
{
assert(a != NULL);
int *begin = a+b;
int *end = a+e;
int *mid;
//异常处理
if (!a || b >= e)
{
return -1;
}
//折半查找
while (begin < end)
{
mid = begin + ((end - begin) >> 1);
assert(*begin <= *mid && *mid <= *end);
if (*mid > v)
{
end = mid;
}
else if (*mid < v)
{
begin = mid + 1;
}
else
{
return mid - a;
}
}
return -1;
}
//递归实现二分查找
int BinSearch(int Array[],int low,int high,int key/*要找的值*/)
{
assert(Array != NULL);
if (low<=high)
{
int mid = (low+high)>>1;
if(key == Array[mid])
{
return mid;
}
else if(key<Array[mid])
{
return BinSearch(Array,low,mid-1,key);
}
else if(key>Array[mid])
{
return BinSearch(Array,mid+1,high,key);
}
}
else
{
return -1;
}
}
void main()
{
int a[10] = {1,2,3,4,5,6,7,8,9,10};
int b = BinSearch(a,0,9,6);
cout << b <<endl;
}
说明:
简要说明:Dfs函数用于判断从k点开始是否能够找到一条交错路。对于每个可以与k匹配的顶点j,假如它未被匹配,交错路就已经找到;假如j已与某顶点x匹配,那么只需调用Dfs(x)来求证x是否可以与其它顶点匹配,如果返回true的话,仍可以使j与k匹配;这就是一次DFS。每次DFS时,要标记访问到的顶点(state[j]=true),以防死循环和重复计算。
- 1432
- 1432
- 1432 Decoding Morse Sequences
- foj 1432 Coin Changing
- 题目1432:叠筐
- hdu 1432 Lining Up
- 题目1432:叠筐(水题!!!)
- bzoj 1432: [ZJOI2009]Function
- 南邮 OJ 1432 队长
- Hdu 1432-Lining Up
- 51NOD 1432 独木舟
- 15-题目1432:叠筐
- 九度题目1432
- hdoj 1432 Lining Up
- hdoj 1432 Lining Up
- HDU 1432 Lining Up
- 51nod---1432 独木舟
- Codevs 1432 总数统计
- 字符串消除
- 使按钮变成失效状态,input框变成只读模式以及其他一些页面控制
- 可以区间修改区间查询的树状数组云云
- spring mvc+easyui 初试-
- 1.6
- 1432
- Triangle
- Convert Sorted List to Binary Search Tree
- Sybase ASA(SQL Anywhere)相关电子书籍文档及其他资源合集整理
- Linux目录操作函数:opendir/readdir/closedir
- 打包
- codility上的练习 (1)
- 9.6.1 哈希查找之分离链接哈希表解决哈希碰撞(2)
- Session详解