笔记
GraC++eful
这个作者很懒,什么都没留下…
展开
-
三划分快速排序(王晓东版)(详细注释)
设数组最右侧元素大小为键值x,将数组划分为左、中、右三个子列,其中左侧子列全为比键值更小的元素,中间子列全为与键值相等的元素,右侧子列全为比键值更大的元素,在普通快速排序的基础三分三步进行1 、将搜索游标i、j分别向数组中间移动,如遇到等于键值x的元素,则将他们暂时存放至数组左右两侧。2、当游标i、j相遇时,将初始键值x与此时数组下标元素交换之,并以x为划分中界,将之前暂存在数组左右两端等于键值x的元素移动到中界左右两侧3、递归处理左右子列#include<iostream>using原创 2020-07-27 22:10:56 · 484 阅读 · 0 评论 -
2021天勤数据结构 栈与队列 思考题(2)全排列算法的改进
题目描述:设计一个递归算法,求n个不同字符的所有排列参考答案算法思想上图为参考答案给出的算法,其核心思想在于交换,例如让A和字符串中的每一个字符都进行交换(包括A与自身交换,也可以描述为不交换)得到ABC、BAC、CBA这三种排列,即树中第二层,将第二层的第一个结点视为落在最终位置,从第二个结点开始,重复上述交换过程…最终输出叶子结点即为全排列。算法改进:不难发现这其中的交换操作是可以...原创 2020-05-07 18:07:59 · 268 阅读 · 0 评论 -
PTA 1017 A除以B(C++)
本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。输入格式:输入在一行中依次给出 A 和 B,中间以 1 空格分隔。输出格式:在一行中依次输出 Q 和 R,中间以 1 空格分隔。输入样例:123456789050987654321 7输出样例:17636684150141093474 3...原创 2020-05-06 15:45:44 · 237 阅读 · 0 评论 -
C++ 分而治之——木棒切割问题(二分法)
问题描述:给出n根木棒,长度均已知,现在希望通过切割他们来得到至少K段长度相等的木棒(长度必须是整数),问这些相等的木棒最长有多长。例如对三根长度为15、10、24的木棒来说,假设K = 7,即需要至少7段长度相等的木棒,那么可以达到的最大长度为6。注意事项木棒的长度均为整数,在这种情况下,第一根木棒可以提供15 / 6 = 2根木棒,第二根可以提供10 / 6 = 1根,第三根可以提供4根...原创 2020-05-05 16:31:03 · 2497 阅读 · 1 评论 -
PTA B 1020 月饼
月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。**注意:**销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有 3 种月饼,其库存量分别为 18、15、10 万吨,总售价分别为 75、72、45 亿元。如果市场的最大需求量只有 20 万吨,那么我们最大收益策略应该是卖出...原创 2020-05-02 15:40:31 · 92 阅读 · 0 评论 -
N皇后C++实现(回溯法)参考算法笔记,详细注释
八皇后问题,一个古老而著名的问题,是回溯算法的典型案例。该问题由国际西洋棋棋手马克斯・贝瑟尔于 1848 年提出:在 8×8 格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。高斯认为有 76 种方案。1854 年在柏林的象棋杂志上不同的作者发表了 40 种不同的解,后来有人用图论的方法解出 92 种结果。计算机发明后,有多种计算机语...原创 2020-05-01 15:35:27 · 584 阅读 · 0 评论 -
PTA B1042 字符统计(用哈希表实现)
请编写程序,找出一段给定文字中出现最频繁的那个英文字母。输入格式:输入在一行中给出一个长度不超过 1000 的字符串。字符串由 ASCII 码表中任意可见字符及空格组成,至少包含 1 个英文字母,以回车结束(回车不算在内)。输出格式:在一行中输出出现频率最高的那个英文字母及其出现次数,其间以空格分隔。如果有并列,则输出按字母序最小的那个字母。统计时不区分大小写,输出小写字母。输入样例:...原创 2020-04-28 16:10:06 · 200 阅读 · 0 评论 -
PTA B1008 数组元素循环右移问题 (20分)
问题描述一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式:每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第2行输入N个整数,之间用空格分隔。输出格式:在一行中输出循环右移M位以后的整数...原创 2020-04-26 15:26:02 · 131 阅读 · 0 评论 -
判断回文串
题目描述读入一串字符串,判断是否是回文串。回文串是一个正着读和反着读都一样的字符串,比如level,noon。输入格式一行字符串,长度不超过255。输出格式如果是回文串就输出YES,否则输出NO样例输入12321样例输出YES#include<iostream>#include<cstring>using namespace std;bool i...原创 2020-04-23 15:07:51 · 979 阅读 · 0 评论