3.4k 3 分钟

# 单词分析 # 题目: 给定一个只包含小写字母的字符串,要找出该字符串中出现次数最多的、字典序最小的 字母,输出该字母及该字母出现的次数。 # 分析 (1)统计每个字母出现的次数。 (2)找出出现次数最多、字典序最小的字母。 # 代码 #include<bits/stdc++.h>using namespace std;int cnt[];signed main(){string s;cin >> s;for(int i = 0; i < s.size() ; i ++) cnt[s[i] - 'a'] ++ ;...
3.9k 4 分钟

# 阶乘约数 # 题目 定义阶乘 n! = 1 × 2 × 3 × . . . × n。 请问 100! (100 的阶乘)有多少个正约数 # 分析 唯一分解定理,也称为正整数的唯一质因子分解定理或正整数的唯一素因子分解定理,是数论中的一个重要定理。该定理表明每个大于 1 的正整数都可以唯一地表示为一组质数的乘积。 具体表述如下: 对于任意一个大于 1 的正整数 n,存在一组质数 p1, p2, ..., pk,以及对应的正整数幂次 a1, a2, ..., ak,使得 n = p1^a1 * p2^a2 * ... * pk^ak,并且这个表示方法是唯一的,即如果将 n...
5.9k 5 分钟

# 重复字符串 # 题目: 【问题描述】 如果一个字符串 S 恰好可以由某个字符串重复 K 次得到,我们就称 S 是 K 次重复字 符串。例如 abcabcabc 可以看作是 abc 重复 3 次得到,所以 abcabcabc 是 3 次重复字符串。 同理 aaaaaa 既是 2 次重复字符串,又是 3 次重复字符串和 6 次重复字符串。 现在给定一个字符串 S,请你计算最少要修改其中几个字符,可以使 S 变为一个 K 次重复字符串? 【输入格式】 第一行包含一个整数 K。 第二行包含一个只含小写字母的字符串 S。 其中,1 ⩽ K ⩽ 105 , 1 ⩽ |S| ⩽ 105。其中 |S|...
8.2k 7 分钟

# 九宫幻方 #include <bits/stdc++.h>using namespace std;int vis[10], a[5][5], ans[5][5];int n, cnt;pair<int, int>p[10];bool check(){ int sum = a[1][1] + a[2][2] + a[3][3]; // 取一条对角线的值 if(sum != a[1][3] + a[2][2] + a[3][1]) return false; // 判断另一条对角线的和是否等于 sum,不等于则不是九宫幻方...
3.8k 3 分钟

# 卡片 # 题目: 小蓝有很多数字卡片,每张卡片上都必然刻有 0 ∼ 9 中的一个数字。 卡片可以用来拼凑数字,假设小蓝拥有刻有数字 1 和数字 2 的卡片各一张,那么他可以 利用这两张卡片拼凑出数字 1, 2, 12, 21 这 4 个正整数。现给定刻有数字 0, 1, . . . , 9 的卡片各 2021 张,小蓝将利用这些卡片从 1 开始连续拼凑 数字,请问他最大能拼到数字几(注意:每张卡片只能利用一次)? # 思路: 把每个数字的个数用数组记录下来,然后枚举每个数看能不能组成并减掉使用过的数字。分析可以看出数字 1 最先消耗完,所以用 1 判断。 # 代码: ////...
17k 16 分钟

# # 数据结构 # 优先队列和堆 优先队列(Priority Queue)是一种特殊的队列,它的特点是每次出队的元素是队列中优先级最高的元素。在优先队列中,元素通常带有优先级,这样在出队时会优先选择优先级最高的元素。优先队列常常用于实现任务调度、事件模拟等场景。 在 C++ 中,STL(Standard Template Library)提供了优先队列的实现,可以使用 <queue> 头文件中的 priority_queue 类来创建优先队列。通过指定比较函数或使用默认的比较函数,可以实现不同类型的优先队列(最大堆或最小堆)。 #include...
18k 16 分钟

# 二分搜索 # 从有序数组中查找某个值 二分查找(Binary Search)是一种在有序数组中查找特定元素的算法。它的基本思想是:首先确定数组的中间元素,然后将待查找的元素与中间元素进行比较,如果相等则返回中间元素的索引;如果待查找元素小于中间元素,则在左半部分继续查找;如果待查找元素大于中间元素,则在右半部分继续查找。通过不断缩小查找范围,最终可以找到目标元素或确定目标元素不存在。 #include <iostream>#include <vector>int binarySearch(const...
34k 31 分钟

# 暴力搜索 # 递归 在一个函数中再次调用该函数的这种行为叫做递归,这样的函数被称为递归函数。 递归通常包括两个部分:基本情况和递归情况。基本情况是递归函数停止调用自身的条件,而递归情况则是函数继续调用自身的条件。 # 斐波那契数列 斐波那契数列中的每一项都是前两项的和,斐波那契数列可以用递归的方式来定义:F (0) = 0, F (1) = 1, F (n) = F (n-1) + F (n-2)(n ≥ 2)。 #define MAXN_N 100int memo[MAXN_N + 1];int fib(int n){ if(n <= 1) return...
3.5k 3 分钟

# next_permutation 在 C++ 标准库中, next_permutation 是一个非常实用的函数,它可以用来生成给定序列的下一个字典序排列。这意味着,给定一个序列, next_permutation 能够重新排列其元素,得到一个在所有可能的排列中按字典顺序排在当前排列之后的 “下一个” 排列。如果当前排列已经是所有可能排列中的最后一个,则 next_permutation 会将序列改为最小的排列(即第一个排列),并返回 false ;否则,返回 true 。 next_permutation 定义在头文件 <algorithm>...
1.1k 1 分钟

在 C++ 中, pair 是一个非常有用的模板类,用于存储一对值,这两个值可以是相同类型也可以是不同类型。 pair 定义在头文件 <utility> 中。使用 pair 可以帮助你将两个相关联的数据作为一个单元处理,而不需要创建一个特定的结构或类。 # 基本用法 要创建一个 pair 对象,你可以使用其构造函数,也可以使用 make_pair 函数。下面是一些基本的示例: #include <iostream>#include <utility> // 包含 pair 的定义int main() { //...