c++
Rudeus_
随缘更新
展开
-
c++折半查找的次数
题目描述给你一个无重复数的有序序列,如果采用折半查找的方式,对于给定的数,需要比较几次找到,请编程实现。输入第一行是N,表示序列中数的个数,序列最长1000,第二行是一个有序序列,第三行是要找的数x。输出如果找到x,输出折半比较的次数,否则输出NO。样例输入115 13 19 21 37 56 64 75 80 88 9219样例输出2示例代码...原创 2022-06-25 16:33:55 · 869 阅读 · 1 评论 -
c++任意二叉树的建立与遍历
题目描述有若干个节点,每个节点上都有编号,把这些节点随意地构成二叉树,请编程输出该二叉树的前序遍历序列。输入第一行是n(n小于100),表示有n个节点,每个节点按从1到n依次编号。第一行后有n行,每行三个正整数i、l、r,分别表示节点i及对应的左右孩子的编号,如果不存在孩子则以-1表示。三个整数之间用一个空格隔开。输出输出该二叉数的前序遍历序列。样例输入41 2 43 1 -12 -1 -14 -1 -1样例输出前序遍历:3 1 2 4中序遍历:2 1 4 3后序遍历:2 4 1 3示例代码:(效原创 2022-06-19 16:45:07 · 339 阅读 · 1 评论 -
c++蓝桥杯 长草
【问题描述】小明有一块空地,他将这块空地划分为 n 行 m 列的小块,每行和每列的长度都为 1。小明选了其中的一些小块空地,种上了草,其他小块仍然保持是空地。这些草长得很快,每个月,草都会向外长出一些,如果一个小块种了草,则它将向自己的上、下、左、右四小块空地扩展,这四小块空地都将变为有草的小块。请告诉小明,k 个月后空地上哪些地方有草。【输入格式】输入的第一行包含两个整数 n, m。接下来 n 行,每行包含 m 个字母,表示初始的空地状态,字母之间没有空格。如果为小数点,表示为空地,如果原创 2022-04-04 02:12:41 · 402 阅读 · 0 评论 -
c++捡水果(dp实例)
题目背景:某君在玩一款游戏,他在一个山顶,现在他要下山,山上有许多水果,某君每下一个高度就可以捡起一个水果,并且获得水果的能量。山的形状如下所示:31 26 2 33 5 4 1这是一个高度为4的山,数字代表水果的能量。每次下一个高度,某君需要选择是往左下走,还是往右下走。例如:对于上图的情况,某君能获得的最大能量为,3+1+6+5=15。现在,某君希望你能帮他计算出下山能获得的最大能量。输入格式:第一行为山的高度以下几行为每水果的能量数样例输入:431 2原创 2022-03-31 22:01:06 · 4359 阅读 · 0 评论 -
c++K个数的和(DFS实例)
题目背景:从n个数中选取k个数,使他们的和为sum,则选取不同数的方案有几种?输入格式:第一行分别为数的总数,选取几个数,和为多少第二行为这n个数,中间用空格隔开输出格式:一个整数,表示有几种选取方案示例代码一:考虑每个数选或者不选用到了可行性剪枝,当目前已经选了大于k个数或者目前选取数的总和以及大于了sum明显不行,剪掉这种情况的树枝#include<iostream>using namespace std;int n, k, sum, ans;in原创 2022-03-29 22:43:34 · 1536 阅读 · 0 评论 -
c++八皇后问题(DFS实例)
题目背景:八皇后问题,是一个古老而著名的问题,是搜索算法的典型案例。该问题是国际西洋棋棋手马克斯-贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。思路:深搜,考虑从第0行开始每行都放一个皇后,并且在放置的过程中标记该列、该点在主对角线和副对角线的位置。#include<iostream>using namespace std;int ans = 0;int col[10], d1[2原创 2022-03-29 09:52:27 · 1538 阅读 · 0 评论 -
c++等边三角形(DFS实例)
题目背景:某君手上有一些小木棍,它们长短不一,蒜头君想用这些木棍拼出一个等边三角形,并且每根木棍都要用到。例如,蒜头君手上有长度为1,2,3,3的4根木棍,他可以让长度为1,2的木棍组成一条边,另外2跟分别组成2条边,拼成一个边长为3的等边三角形。蒜头君希望你提前告诉他能不能拼出来,免得白费功夫。输入格式:首先输入一个整数n(3≤n≤10),表示木棍数量,接下来输入n根木棍的长度pi(1≤pi ≤10000)。输出格式:如果能拼出等边三角形,输出“yes",否则输出“no"。样例输入原创 2022-03-29 08:51:07 · 1997 阅读 · 0 评论 -
c++迷宫游戏 & 迷宫最短路问题(DFS实例 & BFS实例)
题目背景:我们用一个二维的字符数组来表示迷宫;其中字符 S 表示起点,字符 T 表示终点,字符 * 表示墙壁,字符 . 表示平地。你需要从S出发走到T,每次只能向上下左右相邻的位置移动,不能走出地图,也不能穿过墙壁,每个点只能通过一次。你需要编程来求解出一种从起点到终点的走法。样例输入:5 6....S*.***...*..*.*.***..T....样例输出:.T........H*.***HH.*..*H*.***H.THHHH示例代码:#in原创 2022-03-26 16:34:33 · 4733 阅读 · 0 评论 -
c++打印锯齿矩阵
题目背景:锯齿矩阵是指每—行包含的元素个数不相同的矩阵。比如:3 5 2 6 12 3 41 6 2 7读入若干对整数(x, y),表示在第x行的末尾加上一个元素y。输出最终的锯齿数组。初始时矩阵为空。输入格式:第一行输入两个整数n, m(1 ≤n, m ≤ 10000),其中n表示锯齿数组的行数,m表示插入的元素总数。接下来一共m行,每行两个整数x, y(1 ≤x ≤n,0≤y≤10000),表示在第x行的末尾插入一个元素y。输出格式:—共输出n行,每行若干个用空格分隔的原创 2022-03-22 20:25:19 · 978 阅读 · 0 评论 -
c++评奖(sort排序结构体)
题目背景:东东所在的班级有N名同学,期末考试进行了数学、语文、英语、地理四门功课的测试。班主任要将这N名学生中总分前三名定为本学期的“学习小标兵”。现在给出这N名学生的姓名和各科成绩,请你编程找到总分前三名,并依次输出他们的姓名。所给数据不会有总分相同的情况。输入格式:输入包含N+1行,第一行仅有一个正整数N(3≤N≤40),表示东东班里学生的总数,接下来的N行,每行描述一个学生的考试信息,依次为姓名、数学成绩、语文成绩、英语成绩与地理成绩,两两之间用一个空格分隔。注意:姓名(不会同名)都用小写字原创 2022-03-17 23:40:23 · 2138 阅读 · 0 评论 -
c++字母三角形
输出一个稍微复杂的三角形,输入一个大写字母(A-z)或者一个数字( 1-9 ) 。比如输入是F的时候,输出:输入是3的时候,输出:示例代码:#include<iostream>using namespace std;int main(){ char c; cin >> c; if (c >= 'A' && c <= 'Z') { for (int i = 1; i <=原创 2022-03-08 10:46:42 · 3156 阅读 · 0 评论 -
c++反转两次的数字
题目背景:反转 一个整数意味着倒置它的所有位。例如,反转 2021 得到 1202 。反转 12300 得到 321 ,不保留前导零 。给你一个整数 num ,反转 num 得到 reversed1 ,接着反转 reversed1 得到 reversed2 。如果 reversed2 等于 num ,返回 true ;否则,返回 false 。示例 1:输入:num = 526输出:true解释:反转 num 得到 625 ,接着反转 625 得到 526 ,等于 num 。示例 2原创 2022-03-02 19:37:10 · 737 阅读 · 0 评论 -
c++快速排序(三平均划分法优化)
题目背景:要求编写函数qsort来实现快速排序,用户依次输入待排序数据个数、待排序数据以及排序方式。样例输入:588 25 63 10 70样例输出:After quick sorted:7 10 25 63 88#include<iostream>using namespace std;void swap(int& a, int& b){ int temp = a; a = b; b = temp;}void cmpswap(原创 2022-02-11 18:33:58 · 598 阅读 · 0 评论 -
c++利用递归求数组元素的总和
题目背景:有一个数组,用户声明数组大小和元素,要求编写一个递归函数SumArray来求出该数组中所有元素的和。样例输入:31 2 3样例输出:6思路:分而治之。递归条件为数组的某元素+剩余元素的总和;基线条件为当数组剩余元素个数为0时。#include<iostream>using namespace std;int SumArray(int a[], int n, int len){ if (n == 0) //基线条件 { return 0原创 2022-01-28 16:36:13 · 2948 阅读 · 0 评论 -
c++农场主均分土地为方块
题目背景:假设你是一个农场主,有一块小土地,1680*640那么大,你要将这块土地均匀的分成方块,要使分出的方块足够大,应该怎么分?一个重要信息:将该土地以短边长划分土地,余下一块非方形土地,则适用于这小块土地的最大方块也是适用于整块地的最大方块(由欧几里德算法得出)。思路:分而治之。递归条件为不断划分出这样的小块土地,并在这小块土地中再求原问题(降低了问题的规模);基线条件为这当小块土地是方形土地,即一边是另一边的整数倍时得到答案。#include<iostream>using原创 2022-01-28 16:28:55 · 1973 阅读 · 0 评论 -
c++字符串中元音字母转置
题目背景:用户输入n(n<=5)个单词,每个单词长度不超过30。将这几个单词从左往右的第一个小写元音字母和从右往左的第一个小写元音字母互换位置,以单词的中间字母为界限。例如,apple变成eppla。——还没写好。。#include<iostream>using namespace std;int main(){ int n; cin >> n; //用户输入n个单词, n<=5, 每个单词长度不超30 char arr[5][30]; for原创 2022-01-21 19:14:31 · 856 阅读 · 0 评论