分类: c艹

15 篇文章

从暴力递归到空间最优:完全背包问题的完整优化之路
一、问题理解:什么是完全背包? 先明确完全背包的核心定义,避免与 0-1 背包混淆: 给定一个容量为 V 的背包,n 个物品,每个物品有体积 volume[i] 和价值 value[i],每个物品可以无限次选取。要求在不超过背包容量的前提下,选择物品使总价值最大。 二、第一版代码:暴力递归(思路对但效率极低) 这是我最初的实现,完全贴合 “选 / …
铁路旅游期望时间问题求解过程
⚠️ 核心提示:本文梳理的“铁路旅游期望时间”问题求解过程中,两版尝试代码均存在未解决错误;且因不打算改动原有代码逻辑,已决定暂时放弃这道题的进一步求解。 下面我会用最直白的话,一步步拆解这个问题:从题目讲的是什么,到解决问题的核心思路,再到关键知识点、算法步骤和代码实现尝试。全程不堆砌专业术语,每个新知识点都会先讲清楚“是什么”再讲“怎么用”,帮…
thumbnail
判断字符串排列的编程解析
亲爱的新手程序员奶奶,今天我们来学习一个有趣的字符串问题——判断一个字符串是否是另一个字符串的排列。我会用最简单明了的方式,从基础开始为您详细讲解。 问题理解:什么是字符串排列? 想象您有两串珠子,每串珠子由不同颜色的珠子组成。如果第二串珠子只是第一串珠子重新排列顺序的结果,那么我们就说第二串是第一串的"排列"。 在编程中: 字符串str2是字符串…
thumbnail
长草问题详解:从暴力到优雅
问题理解 我们先来看一下这个问题到底在说什么: 小明有一块空地,被分成了n行m列的小格子。有些格子种了草(用'g'表示),有些还是空地(用'.'表示)。每个月,草会向四个方向(上、下、左、右)扩展到相邻的空地上。我们需要计算k个月后,整个空地的状态是什么样的。 这就像是在模拟草的生长过程:每个月,所有的草同时向外蔓延一格。 第一版代码的问题 我们先…
k倍区间(难度升级版)
#include <iostream> #include <unordered_map> #include <vector> using namespace std; int main() { int N, K; cin >> N >> K; unordered_map<int, vector<long long>> …
子数组和整除问题——哈希表与前缀和
一、问题理解:什么是子数组和整除? 让我们想象有一个装满数字的盒子,里面有5个数字:[1, 2, 3, 4, 5]。我们要从盒子里连续取出一些数字,看看取出的数字加起来能不能被3整除。 连续取出是什么意思?就是不能跳着拿。比如你可以拿[2, 3, 4],但不能拿[1, 3, 5]。我们要数一数,有多少种不同的连续取法,使得取出的数字和能被3整除。 …
分糖果
题目描述有𝑛个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:每个小朋友都把自己的糖果分一半给左手边的孩子。一轮分糖后,拥有奇数颗糖的孩子由老师补给 1 个糖果,从而变成偶数。反复进行这个游戏,直到所有小朋友的糖果数都相同为止。你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。输入描述程序首先读入一个整数𝑁 …
数位递增的数
题目描述 一个正整数如果任何一个数位不大于右边相邻的数位,则称为一个数位递增的数。 例如 1135 是一个数位递增的数,而 1024 不是一个数位递增的数。 给定正整数 nn,请问在整数 1 至 nn 中有多少个数位递增的数? 输入描述 输入的第一行包含一个整数 n(1<n<106)n(1<…
链表
这段代码可以输出1,2...10这个数组的滚动