前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >度小满笔试记录-无向图回溯

度小满笔试记录-无向图回溯

作者头像
opencode
发布2022-12-26 15:56:05
2510
发布2022-12-26 15:56:05
举报
文章被收录于专栏:知识同步

感谢肖大佬的指导

题目大概就是:

有一个无向图,从节点1开始,遍历所有其他节点有几种方法

思路就是回溯,从1开始深度遍历,使用计数法统计所有节点

代码语言:javascript
复制
#include<bits/stdc++.h>
using namespace std;
const int maxn=55;
int b[maxn],n,m,ans=0;
vector<int>vv[maxn];
void dfs(int pos,int cnt){
 if(cnt==n){
  ans++;
  return ;
 }
 for(int i=0;i<vv[pos].size();i++){
  int tt=vv[pos][i];
  if(b[tt]==0){
   b[tt]=1;
   dfs(tt,cnt+1);
   b[tt]=0;
  }
 }
 return ;
}
int main(){
 cin>>n>>m;
 for(int i=1;i<=m;i++){
  int x,y;
  cin>>x>>y;
  vv[x].push_back(y);
  vv[y].push_back(x);
 }
 memset(b,0,sizeof(b));
 b[1]=1;
 dfs(1,1);

// //若不从1开始则有如下 ,且最后ans/2(去重) 
// for(int i=1;i<=n;i++){
//  b[i]=1;
//  memset(b,0,sizeof(b));
//  dfs(i,0);
// }
 cout<<ans<<endl;
}
/*
4 6
1 2
1 3
1 4
2 4
2 3
3 4


1 2 3 4
1 2 4 3
1 3 4 2
1 4 3 2
1 3 2 4
1 4 2 3
*/ 
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-09-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档