Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 面试问题:如何满足最大数量的移动请求_Algorithm_Graph - Fatal编程技术网

Algorithm 面试问题:如何满足最大数量的移动请求

Algorithm 面试问题:如何满足最大数量的移动请求,algorithm,graph,Algorithm,Graph,现场有N栋建筑,范围从0到N-1。每个员工在其中一栋大楼里都有一个办公空间。新员工可能会提出从当前X楼搬到另一个Y楼的请求。移动请求由 class Request { String employeeName; int fromBuilding; int toBuilding; } 最初,所有建筑物都已满。只有在Y楼有人提出搬迁请求,从而产生空缺时,从X楼到Y楼的请求才能实现。给出一个愿望清单,帮助我们规划构建掉期的最佳方式。满足最大请求数的计划被认为是最好的 Examp

现场有N栋建筑,范围从0到N-1。每个员工在其中一栋大楼里都有一个办公空间。新员工可能会提出从当前X楼搬到另一个Y楼的请求。移动请求由

class Request {
    String employeeName;
    int fromBuilding;
    int toBuilding;
}
最初,所有建筑物都已满。只有在Y楼有人提出搬迁请求,从而产生空缺时,从X楼到Y楼的请求才能实现。给出一个愿望清单,帮助我们规划构建掉期的最佳方式。满足最大请求数的计划被认为是最好的

Example 1:

Input:
["Alex", 1, 2]
["Ben", 2, 1]
["Chris", 1, 2]
["David", 2, 3]
["Ellen", 3, 1]
["Frank", 4, 5] 

Output: [["Alex", "Bem"], ["Chris", "David", "Ellen"]]
此问题取自leet代码:

我正试图用python实现这一点,我认为创建一个表示图形的字典将是一个良好的开端,但不确定下一步该做什么

```
def findMovers(buildReqs):
    graph={}
    for i in buildReqs:
        if i[1] not in graph:
            graph[i[1]]=[i[2]]
        else:
            graph[i[1]].append(i[2])
```

制作一个两面图,一边是当前办公室,另一边是未来办公室

为留在当前办公室的人员绘制分数为0的边,为搬进任何所需新办公室的人员绘制分数为1的边


查找最大权重的二分匹配项:

请阅读,这既不是代码编写服务,也不是教程服务。@jonrsharpe Stack Overflow的存在是为了帮助程序员学习并为简单和复杂的编程问题提供标准存储库。希望你对所有类似的问题都投了反对票:这已经有将近十年的历史了,事情会随着时间的推移而改变。我建议你采取行动。@jornsharpe这里有一段引用自你刚刚发送的链接:询问关于。。。具体的编程问题软件算法编码技术软件开发工具我相信我的问题是一个具体的编程问题。祝你有一个愉快的一天。关于下一步该做什么没有什么特别的。我也有点困惑。现在的办公室和未来的办公室不一样吗?我们不知道有人会呆在他们现在的办公室,对吗?这就是我们想要找到的,以及正在搬家的人?我最初的想法是,我们将创建一个有向图,并在该图中找到周期?@user3386109 office 1与office 2匹配,office 2与office 3匹配,office 3与office 1匹配。你用福特·富尔克森或其他任何东西找到的增强路径将创造出你期望看到的循环。
```
def findMovers(buildReqs):
    graph={}
    for i in buildReqs:
        if i[1] not in graph:
            graph[i[1]]=[i[2]]
        else:
            graph[i[1]].append(i[2])
```