noi-11月30日当堂练习

**题目:**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;
}
相关推荐
sheeta199811 分钟前
LeetCode 每日一题笔记 日期:2026.05.20 题目:2657. 找到前缀公共数组
笔记·算法·leetcode
数智工坊28 分钟前
【UniT论文阅读】:用统一物理语言打通人类与人形机器人的知识壁垒
论文阅读·人工智能·深度学习·算法·机器人
梓䈑30 分钟前
【算法题攻略】模拟
c++·算法
Evand J32 分钟前
【课题推荐与代码介绍】卡尔曼滤波器正反向估计算法原理与MATLAB实现
开发语言·算法·matlab
DFT计算杂谈36 分钟前
VASP新手入门: IVDW 色散修正参数
linux·运维·服务器·python·算法
吃着火锅x唱着歌1 小时前
LeetCode 962.最大宽度坡
算法·leetcode·职场和发展
无限进步_1 小时前
【C++】C++11的类功能增强与STL变化
java·前端·数据结构·c++·后端·算法
WL_Aurora1 小时前
Python 算法基础篇之排序算法(一):冒泡、选择、插入
python·算法·排序算法
凌波粒1 小时前
LeetCode--257. 二叉树的所有路径(二叉树)
算法·leetcode·职场和发展
AI算法沐枫1 小时前
大一学生如何入门机器学习,深度学习,学习顺序如何?
人工智能·python·深度学习·学习·线性代数·算法·机器学习