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

思路:

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

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

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

4、最后输出f2021就是第一个点到第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;
}
相关推荐
shada几秒前
CMake指定 MSVC 工具集与 Windows SDK
c++·windows
垆边人似月.5 分钟前
华为机考题:矩阵中的最长递增路径
c语言·c++
A7bert77738 分钟前
【SAM3部署至AGX Orin】环境配置→模型部署→问题记录
c++·人工智能·深度学习·ubuntu
longlongzihan41 分钟前
LeetCode 56合并区间:排序与贪心
c++·算法·leetcode
程序员老陆41 分钟前
C++ 继承方式:公有、保护、私有,到底在控制什么
开发语言·c++
顶点多余1 小时前
9.24 面试复盘
面试·职场和发展
坤坤子吖1 小时前
C++11——Lambda、function、bind 与可调用对象
c++·笔记·学习
白杨尚青1 小时前
C++入门篇(十一):string(中)——容量与增删改查:一篇吃透所有常用接口(万字详解)
java·开发语言·c++
朔北之忘 Clancy1 小时前
2024 CSP-J 第二轮真题解析
c++·算法·青少年编程·noip·csp·信奥赛·noi
Lazionr1 小时前
set和map的使用——从基础接口到实际应用
c++