网易 魔法王国编程题,AC60%,求大佬看看哪里有问题

#include <iostream>
#include <vector>
using namespace std;
#define VISITED 2
int n;
int L;
int maze[50][50];
int maxnum;
void dfs(int i, int j, int length)
{
L--;
bool temp = false;
for (int m = 0; m < n; m++)
{
if (maze[j][m]==2)
{
temp = true;
break;
}

}
if (!temp)
{
length++;
}
maze[j][i]=maze[i][j] = VISITED;
if (L == 0) {
if (length > maxnum) {
maxnum = length;
}
return;
}
if (L > 0) {
for (int nx = 0; nx < n; ++nx) {
if (maze[j][nx] != 0)
{
int temp = maze[j][nx];
dfs(j, nx, length);
maze[j][nx]=maze[nx][j] = temp;    // 注意:之前maze[x][y]被标记为VISITED(值为2),回退后应该将其还原为1
L++;
}
}
}
return;
}
int main()
{
cin >> n >> L;
int temp;
for (int i = 0; i<n; i++)
{
for (int j = 0; j<n; j++)
{
maze[i][j] = 0;
}
}
for (int i = 0; i <= n - 2; i++)
{
cin >> temp;
maze[i + 1][temp] = 1;
maze[temp][i + 1] = 1;
}
maxnum = 1;
for (int i = 0; i < n; i++)
{
if (maze[0][i] == 1)
{
dfs(0, i, 1);
}
}
cout << maxnum;
return 0;
}
全部评论
这个不是暴力解的啊。 可以这样想,除了起点外,要访问其它节点,就必须消耗left的值,访问一个节点,消耗left的值可能是1,也可能是2,但你总可以找到合理的方案,使得一条路不会重复走超过2次,所以left的值不可能超过2了。要想尽可能多的访问城市,那么就得要尽可能多的访问那些消耗left值为1的点。事实上,消耗left为1的点最多不超过树的深度,所以。。。如果你的left小于树的深度,那么访问城市的数量就是left+1,否则,就是(left-deep)/2+deep+1,其中,deep是树的最大深度。deep就用深度有限搜索求。。。
点赞 回复 分享
发布于 2017-09-09 19:45
深搜时间复杂度太高,他就是棵树,算路径长度就行了。(然而时间没来得及改)
点赞 回复 分享
发布于 2017-09-09 17:22

相关推荐

我看标题以为40W,我觉得最差也得40k,点进去一看40块。你永远想不到客户的预算有多低...&nbsp;要求&ldquo;前端使用vue+element开发一个pc端宠物网站和vue+vant开发一个移动端网站,类型是宠物网站的。客户预算40&rdquo;&nbsp;全网最受欢迎的嵌入式面经面经一共32篇文章,12w+字数,包含全部最新的面试必问考点,4.7w+同学学习,2800+订阅,非常适合在找工作面经薄弱的同学,3000+订阅还会涨价,提前订阅提前享受,持续更新中。原帖链接:https://www.nowcoder.com/creation/manager/columnDetail/MJNwoMc
野猪不是猪🐗:哎呀,看来这位客户预算确实挺让人意外的呢!不过,别灰心,有时候客户的预算有限,但项目完成后说不定能带来意想不到的收获呢!😊 至于你提到的嵌入式面经,听起来好像很棒的样子!如果你对求职有帮助,那确实值得订阅学习哦!悄悄告诉你,点击我的头像,我们可以私信聊聊更多求职经验和技巧哦~🎉 对了,你对Vue和Element/Vant的开发有什么疑问或者想要分享的经验吗?我们可以一起探讨一下~😉
点赞 评论 收藏
分享
点赞 评论 收藏
分享
小厂面经,也是我的处女面(30min)1.自我介绍2.spring&nbsp;boot的自动装配原理(好多类和接口的单词都忘了全称是啥了,就说了记得的单词,流程应该说对了吧)3.有用过redis吗?主要是用在实现什么功能(说了技术派用redis的zset来实现排行榜)5.有了解过Redisson吗?讲一下对于分布式锁的了解以及在什么场景下应用(说了秒杀场景)6.对mysql有了解吗?包括它的索引优化和创建(把想起来的全说了)7.了解设计模式吗?比如单例模式,为什么要使用单例模式,它的优点是什么(昨天刚看的设计模式)8.工厂模式有了解吗?主要的使用场景是?(也是昨天刚看的)9.场景题:有7个服务器,需要在早上十点定时的向数据库中的用户表中的用户发短信,如果做到发送的消息不重复,且如果发送失败了需要知道是到哪个用户失败了,这样下次就直接从这个用户开始(我答了用spring&nbsp;task来实现定时,用分布式锁来保证只有一份服务器可以发送消息,用消息队列来存储消息,然后用消息确认机制来保证错误信息的记录,以及在数据库或者业务层面完成消息消费的幂等性)10.场景题:如果在系统启动的时间就将数据库的所有用户相关的信息都读到一个hashmap中(这个没啥思路,没答好)27届的投了一个星期终于有一个面试了,大部分公司都只招26的
inari233:已oc,拒了
查看9道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务