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;
}
相关推荐
晚笙coding1 分钟前
LeetCode 98:验证二叉搜索树 —— 从局部判断到全局范围约束的递归思想
算法·leetcode·职场和发展
学计算机的计算基15 分钟前
回溯算法下篇:四道经典题讲透约束剪枝、原地标记、预计算与状态压缩
java·笔记·算法
霸道流氓气质42 分钟前
SpringBoot中实现告警判定算法-位报警与模拟量阈值-技术详解
spring boot·算法·jquery
行者全栈架构师1 小时前
混元 Hy3 Agent 实战:季度报告 3 小时变 40 分钟
算法·架构·代码规范
兰令水1 小时前
hot100【acm版】【2026.7.21打卡-java版本】
java·开发语言·算法·leetcode·面试
好好沉淀2 小时前
主键选择(自增 vs UUID vs 雪花算法)
java·算法
退休倒计时2 小时前
【每日一题】LeetCode 131. 分割回文串 TypeScript
算法·leetcode·typescript
小白说大模型2 小时前
AI Agent 调试实战:链路追踪、Prompt 可视化与异常定位的系统方法
java·人工智能·python·算法·prompt
梅梅绵绵冰2 小时前
算法题-矩阵
数据结构·算法·矩阵
atunet2 小时前
关于从哈希冲突看缓存设计的实践与权衡7
算法