**题目:**P1294 高手去散步
网址: https://www.luogu.com.cn/problem/P1294
**思路:**按照题目意思模拟
**知识点:**dfs
代码:
cpp
#include<bits/stdc++.h>
#define ll long long
#define eb emplace_back
#define pii pair<int,int>
#define fi first
#define se second
using namespace std;
int a[110][100];
int ans,n,m;
int vis[110];
void dfs(int step,int last,int s)
{
ans=max(ans,s);
for(int i=1;i<=n;i++)
{
if(!vis[i]&&a[last][i]!=-1)
{
vis[i]=true;
dfs(step+1,i,s+a[last][i]);
vis[i]=false;
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
a[i][j]=-1;
}
for(int i=1;i<=m;i++)
{
int x,y,len;
cin>>x>>y>>len;
a[x][y]=len;
a[y][x]=len;
}
dfs(1,0,0);
cout<<ans;
return 0;
}
**题目:**P1706 全排列问题
网址: https://www.luogu.com.cn/problem/P1706
**思路:**按照题目意思模拟
**知识点:**dfs
代码:
cpp
#include<bits/stdc++.h>
#define ll long long
#define eb emplace_back
#define pii pair<int,int>
#define fi first
#define se second
using namespace std;
int a[100];
int vis[100];
int n;
void dfs(int step)
{
if(step>n)
{
for(int i=1;i<=n;i++)
{
cout<<" ";
cout<<a[i];
}
cout<<'\n';
return;
}
for(int i=1;i<=n;i++)
{
if(!vis[i])
{
vis[i]=true;
a[step]=i;
dfs(step+1);
vis[i]=false;
}
}
}
int main(){
cin>>n;
dfs(1);
return 0;
}