摘要:
题目描述 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 附加要求 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗? 样例输入与输出 输入: nums = [1,2,3,4,5,6,7], k 阅读全文
摘要:
题目链接: "合唱团" 题目描述 有 n 个学生站成一排,每个学生有一个能力值,牛牛想从这 n 个学生中按照顺序选取 k 名学生,要求相邻两个学生的位置编号的差不超过 d,使得这 k 个学生的能力值的乘积最大,你能返回最大的乘积吗? 输入描述 每个输入包含 1 个测试用例。每个测试数据的第一行包含一 阅读全文
摘要:
一、石子合并 问题描述 将 n ($1 \le n \le 200$)堆石子绕圆形操场摆放,现要将石子有次序地合并成一堆。规定每次只能选相邻的两堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。请编一程序,由文件读入读入堆数 n 及每堆的石子数。① 选择一种合并石子的方案,使得做 n 1 阅读全文
摘要:
``` #include #include #include #define STRLENTH 100 /*数组转置*/ void reverse(char str[]) { int left = 0;//第一个元素 int right = strlen(str)-1;//最后一个元素 char temp; while(left n2 ? n1:n2; //求两个加数中最大的位数 int... 阅读全文
摘要:
"Goldbach" 判断大素数 include include using namespace std; define N 10000 typedef unsigned long long ll; ll ModMul(ll a, ll b, ll n) { //快速积取模 a b%n ll ans 阅读全文
摘要:
"Reversion Count" 解析:题目数字的长度最大为 99,因此使用字符串处理,那么必然这些数存在某些规律。对于数 a (XYZW) 和数 b (WZYX),原式 = (1000X + 100Y + 10Z +W 1000W 100Z 10Y X) / 9 = (999X + 90Y 90 阅读全文
摘要:
"Nise Anti AK Problem" include using namespace std; int b[1000]; int main() { ios::sync_with_stdio(false); int n; cin n; while(n ) { int m; cin m; int 阅读全文
摘要:
小木棍(最优性剪枝、可行性剪枝) 一、问题描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,已知每段的长都不超过 50 。现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度。给出每段小木棍的长度,编程帮他找出原始最短木棍的可能长度 二、输入格式 第一行为一个整 阅读全文
摘要:
生日蛋糕(优化搜索顺序、可行性剪枝,最优性剪枝) 问题描述 Mr. W 要制作一个体积为 $N\pi$ 的 M 层生日蛋糕,每层都是一个圆柱体,设从下往上数第 i ($1\leq i \leq M$) 层蛋糕是半径为 $R_i$,高度为 $H_i$ 的圆柱。当 $i R_{i+1}$,且 $H_i 阅读全文
摘要:
本系列的开篇之作,先介绍一下剪枝的概念 一、什么是剪枝 搜索的进程可以看成是从树根出发,遍历一颗倒置的树——搜索树的过程。剪枝就是通过某种判断,避免一些不必要的遍历过程 二、剪枝的原则 正确性 准确性 高效性 三、 深度优先搜索的优化技巧 优化搜索顺序 排除等效冗余 可行性剪枝 最优性剪枝 记忆化 阅读全文