【发布时间】:2022-01-10 16:15:24
【问题描述】:
我创建了一个地图 mp 并只插入了一个键和值。当我调用 DFS 函数并进入它时,最初映射大小显示为 1。但是在 DFS 中的第一个 if 条件之后,映射将新的键值对 {0,0} 添加到现有映射并进入else if 条件,因为现在存在键 0。这是我写的代码
#include<vector>
#include<map>
#include<iostream>
using namespace std;
vector<bool> visited;
map<int, int> mp;
bool flag = true;
void DFS(int key)
{
if (visited[key])
{
flag = false;
return;
}
else if (mp.count(mp[mp[key]]) > 0)
{
visited[key] = true;
DFS(mp[key]);
}
}
bool canFinish(int numCourses, vector<vector<int>>& prerequisites)
{
for (int i = 0; i < numCourses; i++)
{
visited.push_back(false);
}
for (auto prereq : prerequisites)
{
std::cout << prereq[0] << " "<<prereq[1] << "\n";
mp.insert({ prereq[0],prereq[1] });
}
for (int i = 0; i < prerequisites.size(); i++)
{
DFS(prerequisites[i][0]);
if (!flag) return false;
}
return true;
}
int main()
{
vector<vector<int>> prerequisites{ {1,0} };
std::cout << canFinish(2, prerequisites);
}
【问题讨论】:
-
如果
[5]不存在,您是否意识到mp[5]会将{5, 0}添加到地图中? -
这些都是您所做的真实陈述。所以没有人必须猜测你的问题是什么或问你可能会意识到什么,你能edit这个问题包含一个明确提出的问题吗?
-
哦,我不知道。非常感谢
标签: c++ dictionary stl