网易2018校招笔试题-游历魔法王国-只能过60%-如何优化

我的回溯法代码
#include <iostream>
#include <vector>
#include <stack>
#include <algorithm>
#include <set>
#include <map>
#include <queue>
#include <unordered_map>
#include <cstdio>
using namespace std;

int F2(/*unordered_*/map<int, set<int>>&p, int left, int n, unordered_map<int,int>&mp, int city) {
	int ans = 0;
	ans = max(ans, (int)mp.size());
	if (left) {
		auto &ns = p[city];
		for (auto i:ns) {
			mp[i]++;
			ans = max(ans, F2(p, left - 1, n, mp, i));
			mp[i]--;
			if (mp[i] == 0) mp.erase(i);
		}
	}
	return ans;
}

int main() {
	int n, L;
	scanf("%d%d",&n,&L);
	/*unordered_*/map<int, set<int>> p;
	int i = 0, j = 0;
	for (i = 0; i < n-1; i++) {
		scanf("%d", &j);
		p[i + 1].insert(j);
		p[j].insert(i+1);
	}
	unordered_map<int, int>mp;
	mp[0]++;
	printf("%d\n",F2(p, L, n,mp,0));
	return 0;
}  
不知道如何继续优化,请大神帮忙orz
全部评论
poj2486
点赞 回复 分享
发布于 2017-09-10 08:52

相关推荐

找个工作&nbsp;学历是要卡的&nbsp;要求是高的&nbsp;技能不足是真的&nbsp;实习经验是0的&nbsp;简历无处可写是事实的&nbsp;钱不好赚是真的&nbsp;想躺平又不敢躺&nbsp;也不甘心躺&nbsp;怕自己的灵感和才华被掩埋甚至从未被自己发现&nbsp;又质疑自己是否真正有才华
码农索隆:你现在啊,你心里都明白咋回事,但是你没办法改变现状,一想到未来,你又没有信心狠下心来在当下努力。 得走出这种状态,不能一直困在那里面,哪不行就去提升哪,你一动不动那指定改变不了未来,动起来,积少成多才能越来越好
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-03 17:37
点赞 评论 收藏
分享
fRank1e:吓得我不敢去外包了,但是目前也只有外包这一个实习,我还要继续去吗
点赞 评论 收藏
分享
争当牛马还争不上
码农索隆:1.把简历改哈 2.猛投,狠投 3.把基础打牢 这样你在有机会的时候,才能抓住
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务