![](https://img-blog.csdnimg.cn/2019092715111047.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
07-C/C++/算法
主要是算法相关文章
王菜鸟
不负青春,野蛮生长!
展开
-
全国第二届高校计算机能力挑战赛
#include<bits/stdc++.h>#define ll long longusing namespace std;int main() { string s, t; cin>>s>>t; ll res1 = 0, res2 = 0; for(int i = 0;i < s.size();i++) { res1 *= 26; res1 += (s[i] - 'A' + 1); } for(int i = 0;i < t..原创 2020-11-29 10:32:08 · 778 阅读 · 0 评论 -
单链表的做题记录
实现一个单链表,链表初始为空,支持三种操作:向链表头插入一个数;删除第 k 个插入的数后面的数;在第 k 个插入的数后插入一个数。现在要对该链表进行 M 次操作,进行完所有操作后,从头到尾输出整个链表。注意:题目中第 k 个插入的数并不是指当前链表的第 k 个数。例如操作过程中一共插入了 n 个数,则按照插入的时间顺序,这 n 个数依次为:第 1 个插入的数,第 2 个插入的数,…第 n 个插入的数。输入格式第一行包含整数 M,表示操作次数。接下来 M 行,每行包含一个操作命令,操作命令可能原创 2021-04-11 10:24:16 · 97 阅读 · 0 评论 -
2018年第九届蓝桥杯C/C++A组省赛 题面&部分题解
第一题标题:分数1/1 + 1/2 + 1/4 + 1/8 + 1/16 + …每项是前一项的一半,如果一共有20项,求这个和是多少,结果用分数表示出来。类似:3/2当然,这只是加了前2项而已。分子分母要求互质。注意:需要提交的是已经约分过的分数,中间任何位置不能含有空格。请不要填写任何多余的文字或符号。直接草稿纸上归纳法,等比数列求和运算算数表达式,应该是(220-1)/219=1048575/524288第二题标题:星期一整个20世纪(1901年1月1日至2000年12原创 2021-03-01 16:44:05 · 313 阅读 · 0 评论 -
ACWing算法模板
ACWing算法模板快速排序算法void quick_sort(int q[], int l, int r){ if (l >= r) return;//区间没有数字,或者只有一个数字,就不需要再进行排序 //x取左右两边边界值,可能会造成超时,故取中间值更优 //i,j指针指向两个边界的两侧 int i = l - 1, j = r + 1, x = q[l + r >> 1]; while (i < j) {转载 2021-03-03 13:31:28 · 525 阅读 · 0 评论 -
蓝桥杯基础练习——回形取数
试题 基础练习 回形取数资源限制时间限制:1.0s 内存限制:512.0MB问题描述 回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。输入格式 输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。输出格式 输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。样例输入3 31 2 34 5 67 8 9原创 2021-03-12 20:27:44 · 343 阅读 · 1 评论 -
分巧克力——二分算法
儿童节那天有 K 位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。小明一共有 N 块巧克力,其中第 i 块是 Hi×Wi 的方格组成的长方形。为了公平起见,小明需要从这 N 块巧克力中切出 K 块巧克力分给小朋友们。切出的巧克力需要满足:形状是正方形,边长是整数大小相同例如一块 6×5 的巧克力可以切出 6 块 2×2 的巧克力或者 2 块 3×3 的巧克力。当然小朋友们都希望得到的巧克力尽可能大,你能帮小明计算出最大的边长是多少么?输入格式第一行包含两个整数 .原创 2021-03-03 18:29:30 · 546 阅读 · 1 评论 -
查找最近的元素——二分法
查找最近的元素在一个非降序列中,查找与蒜头君的给定值最接近的元素。输入格式第一行包含一个整数 nn,为非降序列长度。1 \le n \le 1000001≤n≤100000。第二行包含 nn 个整数,为非降序列各元素。所有元素的大小均在 0\sim1,000,000,0000∼1,000,000,000 之间。第三行包含一个整数 mm,为要询问的给定值个数。1 \le m \le 100001≤m≤10000。接下来 mm 行,每行一个整数,为要询问最接近元素的给定值。所有给定值的大小均原创 2021-03-03 16:14:57 · 963 阅读 · 1 评论 -
关于快速排序的代码最优方案
题目给定你一个长度为n的整数数列。请你使用快速排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在1~109范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤100000输入样例:53 1 2 4 5输出样例:1 2 3 4 5解题思路:在该题目中要求使用快速排序,则在快速排序中的思想是分而治之,那么可以采取以下三个步骤进行解题:原创 2021-03-02 09:35:07 · 316 阅读 · 0 评论 -
闫氏DP分析法
众所周知,OI界有一种神奇(ex)的算法,它几乎可以应用在任何题上,它的分析让许多OIer感到头皮发麻。它就是:DP闫氏DP分析法核心思想:从集合的角度考虑“所有的DP问题,本质上都是有限集中的最值问题”—yxc阶段动态规划有两个要点:状态与状态转移那么阶段自然也应该有两个:状态表示和状态计算状态表示:化零为整转载于以下网址https://www.cnblogs.com/IzayoiMiku/p/13635809.html...转载 2021-03-01 20:17:34 · 395 阅读 · 0 评论 -
二分查找的三种模板(C++版)
文章目录一、二分查找模板一1.1 关键属性1.2 区分语法二、二分查找模板二2.1关键属性2.2 区分语法三、二分查找模板三3.1 关键属性3.2 区分语法一、二分查找模板一int binarySearch(vector<int>& nums, int target){ if(nums.size() == 0) return -1; int left = 0, right = nums.size() - 1; while(left <= right){原创 2020-10-18 17:32:00 · 3949 阅读 · 0 评论 -
2020蓝桥杯模拟赛——数字9
题目:在1至2019中,有多少个数的数位中包含数字9?注意:有的数中的数位中包含多个9,这个数只算一次。例如,1999这个数包含数字9,在计算只是算一个数。【答案提交】这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。代码:#include<stdio.h>int main() { int a, b, c, d; int count = 0; for (int i = 9; i &原创 2020-10-11 23:01:32 · 446 阅读 · 0 评论 -
2020年蓝桥杯模拟题目——约数个数
问题描述1200000有多少个约数?(只计算正约数)**【答案提交】**这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。思路只需要用一个循环,来判断是否能被整除就行了。注意1和这个数本身也是它自己的约数。代码:#include <stdio.h>int main (){ int num=0,i; for(i=1;i<=1200000;i++) { if(1200000%i==0)原创 2020-10-11 22:30:29 · 843 阅读 · 0 评论 -
不使用中间变量将两个数值进行交换(三种方法)
以下是将两个数值进行交换的三种方法#include<bits/stdc++.h>using namespace std;void swap1(int &a,int &b){ a = a + b; b = a - b; a = a - b;}void swap2(int &a,int &b){ a = a * b; b = a / b; a = a / b;}void swap3(int &a原创 2020-10-09 11:50:51 · 2942 阅读 · 0 评论 -
在排序中,如何不借助中间变量进行排序呢?()
今天来给大家分享一个如何不使用中间变量来进行排序。在排序中,最经典的就是冒泡排序了,但是在采用冒泡排序的方法时,大多数的情况下都使用了中间变量来进行值交换。先来捋清一下思路,冒泡排序就是比较相邻两元素的大小,如果前一个数比后一个数字大就交换位置,通过中间变量来进行交换。简单点来讲,就是两杯饮料进行交换,一杯葡萄汁A和一杯橙汁B换个杯子装,需要一个空杯子C来置换。private static void bubble_sort() { int iArr[] = new int[5]; //声明一原创 2020-10-09 11:16:02 · 505 阅读 · 0 评论 -
蓝桥杯题目——算法提高训练
资源限制时间限制:1.0s 内存限制:256.0MB问题描述 提示用户输入被除数(dividend)和除数(divisor),若除数为0,则提示用户重新输入,直至除数非零为止。最后输出商。程序建议大家将被除数、除数和商都定义为整形。 输入被除数提示语句为:Please enter the dividend: 输入除数提示语句为:Please enter the divisor: 提示除数为0需要重新输入的语句为: Error: divisor can not be zero! Ple原创 2020-10-08 00:18:54 · 392 阅读 · 0 评论 -
【PAT刷题】单链表逆转(20分)
本题要求实现一个函数,将给定的单链表逆转。【PAT刷题】单链表逆转(20分)函数接口定义:List Reverse( List L );其中List结构定义如下:typedef struct Node *PtrToNode;struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个结点的指针 */};typedef PtrToNode List; /* 定义单链表类型 */L是给定单.原创 2020-09-14 23:13:48 · 2220 阅读 · 0 评论 -
【PAT刷题】Have Fun with Numbers (20分)
Have Fun with Numbers (20分)**Notice that the number 123456789 is a 9-digit number consisting exactly the numbers from 1 to 9, with no duplication. Double it we will obtain 246913578, which happens to be another 9-digit number consisting exactly the number原创 2020-09-14 22:44:56 · 1196 阅读 · 0 评论 -
递归问题——放苹果
题目小蒜想知道把 MM 个同样的苹果放在 NN 个同样的盘子里,允许有的盘子空着不放,共有多少种不同的分法?(用 KK 表示)55,11,11 和 11,55,11 是同一种分法。输入格式第一行是测试数据的数目 t(0 \le t \le 20)t(0≤t≤20)。以下每行均包含两个整数 MM 和 NN,以空格分开。1 \le M, N \le 101≤M,N≤10。输出格式对输入的每组数据 MM 和 NN,用一行输出相应的 KK。样例输入17 3样例输出8解题思路该题目主要运用了原创 2020-07-18 15:40:38 · 893 阅读 · 1 评论 -
C++、Python实现十大经典排序算法
一、算法概述1. 算法算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。2. 算法的特性算法具有五个特性:有穷性、确定性、可行性、输入和输出。3. 算法的设计目标算法的设计目标是:正确性、可使用性、可读性、健壮性和算法效率。其中算法效率通过算法时间复杂度和空间复杂度来描述。高效率与低存储量需求:通过算法的效率主要指算法的执行时间,对于同一个问题,如果有多种算法可以求解。执行时间短的算法效率高。宋草存储量指的是算法执行过程中所需的最大存储空间,算法效率和原创 2020-06-02 21:37:27 · 335 阅读 · 0 评论 -
算法竞赛入门经典——突击战(1)
突击战题目:你有 n 个部下, n 个任务,你计划让部下 i 去做任务 i (1<=i< =n ) ,但部下还不知道任务 的内容,需要你为每个部下解释任务内容(即交代任务)。第 i 个部下需要你花 B(i) 分钟交代任务,然后他会立刻、独立地、无间断地执行 J( i) 分钟后完成任务。你每次只能给一个 部下交代任务,但部下们可以同时执行各自的任务。问题:交代任务的顺序不同,完成所有任务所用的时间也不同。你需要考虑的是交代任务的 顺序,在最短的时间内完成所有任务。 输入:每个部下交代任务原创 2020-06-02 17:31:58 · 394 阅读 · 0 评论