蓝桥杯(路径 动态规划 C++)

思路:

1、利用动态规划的思想。

2、用f[i]来记录从第一个点到第i个点的最短距离。

3、f[i]赋值分两种情况,第一种:f[i]为0的时候,也就是第一种刚到i点的情况,记录其距离为最小公倍数;第二种:f[i]已经有值了,比较新的点到其距离和之前点到其距离,取小的赋值。

4、最后输出f[2021]就是第一个点到第2021个点的最短距离。

cpp 复制代码
#include<iostream>
using namespace std;
int gcd(int x, int y)//辗转相除法,求最大公约数
{
	return !y ? x : gcd(y, x % y);
}
int main()
{
	int f[2030]={0};//记录到该点的最短距离
	for(int i=1;i<=2021;i++)
		for (int j = i + 1; j <= i + 21; j++)
		{
			if (j > 2021)
				break;
			if (f[j] == 0)
				f[j] = f[i] + i * j / gcd(i, j);
			else
				f[j] = min(f[j], f[i] + i * j / gcd(i, j));
		}
	cout << f[2021] << endl;
}
相关推荐
小白程序员成长日记10 小时前
2025.12.01 力扣每日一题
算法·leetcode·职场和发展
爱装代码的小瓶子10 小时前
【cpp知识铺子】map和set的前身-二叉搜索树
c++·算法
Embedded-Xin10 小时前
Linux架构优化——spdlog实现压缩及异步写日志
android·linux·服务器·c++·架构·嵌入式
[J] 一坚10 小时前
华为OD、微软、Google、神州数码、腾讯、中兴、网易有道C/C++字符串、数组、链表、树等笔试真题精粹
c语言·数据结构·c++·算法·链表
我不会插花弄玉10 小时前
c++入门基础【由浅入深-C++】
c++
不会编程的小寒11 小时前
C and C++
java·c语言·c++
hewayou11 小时前
MFC +Com+ALT工程报 内存泄漏
c++·mfc·内存泄漏·com技术
liulilittle11 小时前
C++ SSE/AVX/SHA/AES指令集检查,用于程序定向优化。
开发语言·c++·cpu·asm·detect·il·features
小龙在山东11 小时前
基于C++空项目运行汇编语言
开发语言·c++
郝学胜-神的一滴11 小时前
Linux信号屏蔽字详解:原理、应用与实践
linux·服务器·开发语言·c++·程序人生