- 博客(33)
- 收藏
- 关注
原创 位运算的应用
an}他想知道,从中任取两个元素 ai aj(i < j),满足 ai xor aj = gcd(ai,aj) 的方案数有多少?gcd,即最大公约数,指两个整数共有约数中最大的一个。例如,12和30 的公约数有 1,2,3,6其中最大的约数是6,因此gcd(12,30) = 6 其中,xor 表示按位异或运算。an(1 <= ai <= 2e5)代表数组中的元素。第一行输入一个正整数n(1 <= n <= 2e5)代表数组中的元素数量。输出一个整数,代表取两个元素的异或等于最大公约数的方案数。
2025-01-24 17:20:54
233
原创 数字三角形
给定一个由n行数字组成的数字三角形,设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大;三角形的第i行有i(i=1…n),对于i,j,位置只能走到i+1,j与i+1,j+1位置;一个数字n,代表层数。随后是n行数字,代表数字三角形的n。(1≤n<350) (三角形里的数<100)。
2025-01-18 21:16:51
609
原创 PTA 7-20 树的遍历
输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。假设树的根节点编号为n,则左孩子编号为2n,右孩子编号为2n+1,如果知道这个的话,就很好写了。在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。这里假设键值都是互不相等的正整数。
2025-01-16 11:59:38
144
原创 双指针的运用
请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。本题主要运用双指针和STL中的unordered_map,代码如下。假设字符串中只包含从 a 到 z 的字符。输入字符串长度 [0,1000]
2025-01-14 10:53:05
118
原创 最长上升子序列
K,他们的身高分别为T1,T2,…总结:该题一开始看认为比较复杂,但实际是最长上升序列问题,只是从左到右和从右到左分别找了一遍,思路不难,但要学会勤回顾,避免知识点的遗忘。第二行有n个整数,用空格分隔,第i个整数Ti(130≤Ti≤230)是第i位同学的身高(厘米)。你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。N位同学站成一排,音乐老师要请其中的(N−K)位同学出列,使得剩下的K位同学排成合唱队形。第一行是一个整数N(2≤N≤100),表示同学的总数。
2025-01-07 17:07:02
212
原创 经典的N皇后
在N×N的棋盘上放置N个皇后(n≤10)而彼此不受攻击(即在棋盘的任一行,任一列和任一对角线上不能放置2个皇后),编程求解所有的摆放方法,按字典序排序。每行输出一种方案,每种方案顺序输出皇后所在的列号,各个数之间有空格隔开。若无方案,则输出no solute!该题是经典中的经典,多多回顾,肯定可以慢慢掌握的。注意:每一列最后没有空格,请不要输出多余空格!
2025-01-07 15:47:00
173
原创 字符串连接(指针版)
编写程序,将两个字符串连接起来,不要用strcat函数。两个字符串的长度小于100。两行,分别是两个字符串。注意,字符串可能有空格。
2025-01-07 09:20:30
121
原创 归并求逆序数
对于数列a1,a2,a3中的任意两个数ai,aj(i<j)如果ai>aj,那么我们就说这两个数构成了一个逆序对;在一个数列中逆序对的总数称之为逆序数,如数列 1 6 3 7 2 4 9中,(6,4)是一个逆序对,同样还有(3,2),(7,4),(6,2),(6,3)等等,你的任务是对给定的数列求出数列的逆序数。输入数据N(N≤100000)表示数列中元素的个数,随后输入N个正整数,数字间以空格间隔。输出逆序数并将数从小到大输出。本题考查的就是归并排序。
2024-12-10 20:48:39
253
原创 最少转弯问题
分析:一看就是用搜索,但是用广搜还是深搜要考虑一下,一看数比较大,所以选择广搜BFS,广搜实际就用队列实现,但这个题与平常的做法不大一样,稍微有点改动,那就看一下这个题是如何用巧妙的方法写出来的吧。整体都是常规思路,核心步骤在while循环里面。
2024-12-10 16:40:34
516
原创 找最长单词
输入1行句子(不多于200个单词,每个单词长度不超过100),只包含字母和空格。单词由至少一个连续的字母构成,空格是单词间的间隔。试输出第1个最长的单词。注意:如果所有单词长度相同,那么第一个单词就是最长单词。1行,第一个最长的单词。
2024-12-08 19:00:51
550
原创 广度优先搜索解决迷宫问题
第1行是一个正整数n (1 ≤ n ≤ 100),表示迷宫的规模是n * n的。接下来是一个n * n的矩阵,矩阵中的元素为0或者1。一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由n * n的格点组成,每个格点只有2种状态,0和1,前者表示可以通行后者表示不能通行。分析:看到迷宫类的问题我的第一反应使用DFS,但给的数n太大了,用DFS会时间超限,所以这样运用BFS解决,代码如下。广搜用的是队列,而深搜用的是栈,广搜的效率肯定是高于深搜的。本题还用到了递推,值得深入思考,学习。
2024-12-02 19:22:23
388
原创 牛客【“华为杯” 2024年广东工业大学新生赛(同步赛)】F-字符串缩写太多了!
缩写aab的方案有 2 种:aaa aab bba、aab aaa bba。缩写aba的方案有 2 种:aaa bba aab、aab bba aaa。缩写baa的方案有 2 种:bba aaa aab、bba aab aaa。缩写aa的方案有 2 种:aaa aab、aab aaa。缩写ab的方案有 2 种:aaa bba、aab bba。缩写ba的方案有 2 种:bba aaa、bba aab。共有 2+1+2+2+2+2+2+2=15 种方案。缩写a的方案有 2 种:aaa、aab。
2024-12-01 21:18:47
559
原创 牛客【“华为杯” 2024年广东工业大学新生赛】i-小p爱折跃
分析:存在闭环和自环,只需找到闭环和自环的个数就可以,然而最后交换的次数就为总个数减一。反思:自己想错了,想的过于复杂,与学长一交流思路就打开了,还是要多练。
2024-12-01 21:00:51
436
原创 迷宫问题(DFS)
设有一个N∗N(2≤N<10)方格的迷宫,入口和出口分别在左上角和右上角。迷宫格子中分别放0和1,0表示可通,1表示不能,入口和出口处肯定是0。迷宫走的规则如下所示:即从某点开始,有八个方向可走,前进方格中数字为0时表示可通过,为1时表示不可通过,要另找路径。找出所有从入口(左上角)到出口(右上角)的路径(不能重复),输出路径总数,如果无法到达,则输出0。
2024-11-30 20:27:52
441
原创 采药(01背包)
医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。第一行有 2 个整数 T (1<=T<=1000)和M(1<=M<=100),用一个空格隔开,T代表总共能够用来采药的时间,M代表山洞里的草药的数目。接下来的 M 行每行包括两个在 1 到 100之间(包括 1和 100)的整数,分别表示采摘某株草药的时间和这株草药的价值。输出在规定的时间内可以采到的草药的最大总价值。
2024-11-30 18:59:37
496
原创 我会快排啦
第 1 行为一个正整数 N(N<=10^5),第 2 行包含 N 个空格隔开的正整数 ai,为你需要进行排序的数,数据保证了ai 不超过 10^9。将给定的 N 个数从大到小输出,数之间空格隔开。将读入的 N 个数从大到小排序后输出。
2024-11-27 18:02:38
279
原创 统计单词数
注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例1 ),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2 )。一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中的位置,位置从0 开始);一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。
2024-11-27 17:41:39
386
原创 重生之我会回文日期啦
牛牛习惯用 8 位数字表示一个日期,其中,前 4 位代表年份,接下来 2 位代表月份最后 2 位代表日期。牛牛认为,一个日期是回文的,当且仅当表示这个日期的 8 位数字是回文的。现在,牛牛想知道:在他指定的两个日期之间包含这两个日期本身),有多少个真实存在的日期是回文的。一个 8 位数字是回文的,当且仅当对于所有的 i (1≤i≤8)从左向右数的第 i 个数字和第9−i 个数字(即从右向左数的第 i 个数字)是相同的。对于 2010 年 1 月 2 日,用 8 位数字 20100102 表示,它是回文的。
2024-11-25 19:32:57
1055
原创 拼数(字符串)
第二行输入 𝑛n 个正整数 𝑎1,𝑎2,…,𝑎𝑛a1,a2,…,an(1≤𝑎𝑖≤1051≤ai≤105)。给定 𝑛n 个正整数 𝑎1,𝑎2,…,𝑎𝑛a1,a2,…,an,你可以将它们任意排序。现要将这 𝑛n 个数字连接成一排,即令相邻数字收尾相接,组成一个数。第一行输入一个正整数 𝑛n(1≤𝑛≤201≤n≤20)。整体思路是简单的,主要记住cmp函数的做法。问,这个数最大可以是多少。输出一个整数,表示答案。
2024-11-25 16:43:40
185
原创 走楼梯(递推算法)
级台阶,上楼可以一步上一阶,也可以一步上二阶。编一递归程序,计算共有多少种不同走法?总结:本题运用了高精度加,递推算法并灵活运用了vector的性质。
2024-11-25 15:37:37
306
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人