![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Algorithm
文章平均质量分 63
C/C++学习基础
数学作曲家
软件工程 记录学习
展开
-
基础算法二
高精度(C++)问题:一共考4种问题:大整数相加 A+B A,B<=10的6次方大整数相减 A,B<=10的6次方大整数相乘 A<=10的6次方, a<=10的9次方大整数相除 A<=10的6次方, a<=10的9次方// java有大整数类,python是无限大,不需要。大整数是很大的,用字符数组写...原创 2020-04-24 12:30:49 · 182 阅读 · 0 评论 -
基础算法一
排序: 快排 归并排序二分: 整数 浮点数快速排序1.主要思想---->代码2.每个题的模板写出来—> 默写3.题目------> 有对应解决方案以上3个步骤反复进行快速排序----->分治1.确定分界点q[l],q[(l+r)/2],q[r] 随机***2.划分区间(调整区间) 两部分|---------------------------...原创 2020-04-22 22:15:11 · 345 阅读 · 0 评论 -
实现字符串反转的几种方法
思路一:输入字符串,把它的逆序字符串存放在原字符串后面,然后输出;思路二:输入字符串,然后分别位于同一行顺序输出,逆序输出;思路三:就思路二的所有输出,采用递归实现;注意事项:思路一:放在原字符串后面时,要从第lenth-1的位置开始放,直到原字符串第一个字符放入为止;即:for( i=strlen(a),j=strlen(a)-1; j>=0; i++,j–){a[i...原创 2019-11-26 08:58:39 · 1391 阅读 · 0 评论 -
实验题一(实现顺序表各种基本运算的算法)
目的:领会顺序表存储结构和掌握顺序表中各种基本运算算法设计。内容:编写一个.cpp的程序,实现顺序表的各种基本运算和整体建表算法(假设顺序表的元素类型为 Elemtype char),并在此基础上设计一个主程序,完成如下功能:(1)初始化顺序表L。(2)依次插入a,b,c,d,e元素。(3)输出顺序表L。(4)输出顺序表L的长度。(5)判断顺序表L是否为空。(6)输出顺序表L的第3个...原创 2019-11-05 01:18:15 · 16529 阅读 · 4 评论 -
坐标排序
code:#include<iostream>#include<cstdio>#include<algorithm>#include<cstdlib>using namespace std;struct node{int a;int b;int c;}p[10000];bool cmp(node x,node y){i...原创 2019-10-15 23:16:47 · 1849 阅读 · 0 评论 -
快速排序
code:#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int a[100055];void qsort(int l,int r)//快排函数 { int i=l; int j=r; int x=a[(l+r)/2]; ...原创 2019-10-15 22:33:55 · 100 阅读 · 0 评论 -
插入排序
code:#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int main(){ int a[100055]; int i,j,k; int n,head=1; cin>>n; for(i=1;i<=n;i++){ cin&...原创 2019-10-11 01:07:43 · 96 阅读 · 0 评论 -
冒泡排序
code:#include<iostream>#include<cstdio>#include<algorithm>using namespace std;//冒泡排序 int main(){ int i,j,k; int n,head=1; int a[100055]; cin>>n; for(i=1;i<=n;i+...原创 2019-10-11 00:27:10 · 83 阅读 · 0 评论 -
kmp(模式匹配算法)
KMP算法(研究总结,字符串)前段时间学习KMP算法,感觉有些复杂,不过好歹是弄懂啦,简单地记录一下,方便以后自己回忆。引入首先我们来看一个例子,现在有两个字符串A和B,问你在A中是否有B,有几个?为了方便叙述,我们先给定两个字符串的值A=”abcaabababaa”B=”abab”那么普通的匹配是怎么操作的呢?当然就是一位一位地比啦。(下面用蓝色表示已经匹配,黑色表示匹配失败)此...原创 2019-07-27 17:48:15 · 91 阅读 · 0 评论 -
Algorithm3
1.数组起别名如果我们将一个数组变量赋值给另外一个数组变量,那么两个变量将会指向同一个数组。demo:int[] a=new int[N];.........................int[] b=a;b[i]={5,6,7,8};///a[i]的值也会变为5,6,7,8//这种情况和复制数组是有差别的,所以叫做起别名2.二维数组double[][] a;a=new...原创 2019-07-22 06:53:01 · 162 阅读 · 0 评论 -
Algorithm2
水题1:找出数组元素最大值原创 2019-07-20 23:23:28 · 167 阅读 · 0 评论 -
Algorithm1
算法基础重构:1.1基础编程模型1.1.1java程序基本结构原始数据类型:它们在计算机程序中精确定义整数,浮点数,布尔值。语句:程序通过语句执行实现功能:6种语句(声明,赋值,条件,循环,调用,返回)数组:多个同种数据类型的值的集合静态方法:静态方法可以封装并重用代码,使得我们可以用独立的模块开发。字符串:一连串的字符,java内置了对它们的一些操作。标准输入/输出:输入输出是程...原创 2019-07-19 17:26:45 · 433 阅读 · 0 评论 -
整数序列相差最小元素对(算法概论)
问题描述有一个整数序列,所有元素均不相同,设计一个算法求相差最小的元素对的个数。例如序列 4,1,2,3的相差最小的元素对的个数是3,其元素对是(1,2),(2,3),(3,4)。题解:先递增排序,再求相邻元素的差,比较求最小元素差,累计最小元素差的个数。代码:#include<iostream>#include<algorithm>#include<v...原创 2019-03-12 19:56:59 · 2445 阅读 · 0 评论 -
字符串中字符串出现次数(计蒜客)
问题描述有一天,蒜头君和花椰妹在公园里散步,走着走着,我的天!他们各自捡到了一串漂亮的字符串,然而蒜头君好奇心重,他想知道自己的字符串在花椰妹的字符串里出现了多少次,例如花椰妹的字符串为 abababa,蒜头君的字符串为aba,那么蒜头君的字符串在花椰妹的字符串里出现了3次。蒜头君一向比较傲娇,于是向你请教,你可以帮帮他吗?输入格式输入包含两行,第一行为花椰妹捡到的字符串,第二行为蒜头君捡到...原创 2019-03-10 23:27:50 · 470 阅读 · 0 评论 -
对称字符串
C/C++:strlen(), 获取字符串长度。java中 compareTo(字符串比较),char At(获取字符串的某个字符) indexOf(字串查找)问题描述蒜头君认为对称是一种美,他希望任何东西都是对称的,连字符串都是不放过。蒜头君在沙盘上写了这样一些字符串:A1: AA2:ABAA3:ABACABAA4:ABACABADABACABA…对于给定的N,你能根据规律输出...原创 2019-03-10 23:08:09 · 2165 阅读 · 0 评论 -
字符串比较(计蒜客)
strcat(a,b),将a和b连接在一起。strcmp(a,b),字符串比较函数。#include<iostream>#include<string>using namespace std;int main(){ char *str1 = "cd", *str2 = "abc"; int res = strcmp(str1, str2); if (res ...原创 2019-03-10 22:20:32 · 206 阅读 · 0 评论 -
字符串复制(计蒜客)
strcpy(a,b) 将b赋值给a!#include<stdio.h>#include<string.h>int main(){ char name[10]; char *str = "jisuanke"; strcpy_s(name, str); printf("%s\n", name); return 0;}原创 2019-03-10 22:02:52 · 145 阅读 · 0 评论 -
三部排序
问题描述三部排序一般的排序有许多经典算法,如快速排序、希尔排序等。但实际应用时,经常会或多或少有一些特殊的要求。我们没必要套用那些经典算法,可以根据实际情况建立更好的解法。比如,对一个整型数组中的数字进行分类排序:使得负数都靠左端,正数都靠右端,0在中部。注意问题的特点是:负数区域和正数区域内并不要求有序。可以利用这个特点通过1次线性扫描就结束战斗!!以下的程序实现了该目标。其中x指...原创 2019-03-01 22:26:05 · 213 阅读 · 0 评论 -
算法之路——概论习题总结
1.算法是就求解问题的一系列计算步骤。算法具有 有限性,确定性,可行性,输入性,输出性5个重要特征。2.判断一个大于2的正整数n是否为素数的方法有多种,给出两种算法,说明其中一种算法更好的理由。两种算法如下:#include&amp;amp;lt;iostream&amp;amp;gt;#include&amp;amp;lt;cmath&amp;amp;gt;using namespace std;bool isPrim原创 2019-01-28 20:25:48 · 4255 阅读 · 1 评论 -
STL算法五
5.优先队列作为堆在有些算法设计种用到堆,堆采用STL的优先队列来实现,优先级的高低由队列中数据元素的关系函数(比较运算符)确定,很多情况下需要重载关系函数。优先队列(堆)头文件:#include< queue >大根堆定义:priority_queue< int >pq小根堆定义:priority_queue< int ,vector< int >...原创 2019-01-17 14:48:32 · 170 阅读 · 0 评论 -
STL算法(四)
4.数据的排序对于list容器中元素的排序可以使用其成员函数sort(),对于数组或者vector等具有随机访问特性的容器可以使用 STL算法sort()。下面以STL算法sort()为例进行讨论。(1)内置数据类型的排序对于内置数据类型的数据,sort()默认以less(小于关系函数)作为关系函数实现递增排序,为了实现递减排序,需要调用头文件中定义的greater类模板。例如,以下程序使用...原创 2019-01-14 18:47:20 · 210 阅读 · 0 评论 -
STL算法应用(三)
用户可以使用map容器或者哈希表容器检测数据元素是否唯一。eg:设计一个算法判断字符串 str中的每个字符是否唯一。如果是返回true,否则返回false。解:设计map<char,int>容器mymap,第一个分量key的类型为char,第二个分量value的类型为int,表示对应关键字出现的次数。将字符串str中的每个字符作为关键字插入到 map容器中,插入后对应出现次数增1...原创 2019-01-14 18:22:38 · 185 阅读 · 0 评论 -
STL算法的应用(二)
2.存放临时数据在算法设计有时需要存放一些临时数据,通常的情况是,如果后存入的元素先处理,可以使用(栈)stack容器【后进先出】;如果现先存入的元素先处理,可以使用queue(队列)容器,如果元素的处理顺序按照某个优先级进行,可以使用priority_queue容器。例.设计一个算法,判断一个含有(),[],{},3中类型括号的表达式中的所有括号是否匹配。解:这里的主数据是一个字符串表达...原创 2019-01-14 18:03:06 · 439 阅读 · 0 评论 -
交叉排序
题目描述输入N个数,把所有奇数位置上的数从小到大排序,把偶数位置上的数从大到小排序。输入输入的第一行是一个正整数N(2&lt;=N&lt;=100)。第二行是N个用空格隔开的整数。输出输出只有一行N个数,是按要求排序后的序列,用空格隔开。示例输入61 2 3 4 5 6示例输出1 6 3 4 5 2代码:#include&lt;iostream&gt;#include&..原创 2019-01-14 14:01:27 · 117 阅读 · 0 评论 -
STL在算法设计中的应用
1.存放主数据(选择容器时不仅要考虑数据的类型,还要考虑数据的处理过程)eg:字符串可以采用string或者vector来存储,链表可以采用list来存储。例1.有一段英文由若干单词组成,单词之间用一个空格分隔。编写程序提取其中的所有单词。解:这里的主数据时一段英文,采用string字符串str存储,最后提取的单词采用vector 容器words存储。对应的完整程序如下:#include&...原创 2019-01-12 19:23:55 · 400 阅读 · 0 评论 -
STL (程序整理集)
(1)使用STL算法sort()实现整形数组a的递增排序:#include<algorithm>using namespace std;void main(){int a[]={2,5,4,1,3};sort(a,a+5);for(int i=0;i<5;i++)printf("%d",a[i]);//输出:1 2 3 4 5printf("\n");}(...原创 2019-01-12 17:30:24 · 802 阅读 · 0 评论 -
程序设计竞赛中的调试技巧
代码能力是我们在程序设计竞赛中常常谈到的一种能力,是指选手把算法用代码准确地实现的能力。2005 年,Comars 曾经给代码能力作过一个比较准确的定义:如果我 150150 行以内的题目,1Y(提交一次就正确通过,Y 是指 Yes)率非常高,并且保持稳定;而当代码长度超过 150150 行以后,1Y 率就开始急速下降了。如果我们画出一条代码行数与 1Y 率之间的关系的曲线,150150 行就是...原创 2019-01-12 13:15:10 · 568 阅读 · 0 评论 -
STL(algorithm函数整理集)
algorithm下的常用函数使用algorithm头文件,需要在头文件下加一行using namespace std;”max(x,y) 返回x y中的最大值,参数只能是两个,如果想比较x,y,z的最大值,可写为max(x,max(y,z))min(x,y)同理,返回的是x,y中的最小值abs(x)返回x的绝对值,x必须是整数 浮点数是math文件下的fabsswap(x,y)用来交换...原创 2019-01-10 12:55:25 · 2121 阅读 · 0 评论 -
STL(常用的STL容器一)
常用的STL容器(每一个容器就是一个类模板,大致分为顺序容器,适配器容器,关联容器。1.顺序容器(按照线性次序的位置存储数据,即第一,第二,,第三,依次类推,常用的顺序容器是vector,string,deque,list).(1)向量容器(vector)|v[0]|v[1]|v[2]…|v[n-1]|[增长的空间] |表头 表尾以上为v...原创 2019-01-09 09:54:18 · 152 阅读 · 0 评论 -
STL(一)(container,algorithm,iterator)
STL中的sort(),因为封装在命名空间std中,STL中的sort()算法编译为std::sort(),从而避免了名字名字冲突。则有文件开头必加:using namespace std;STL算法:用来操作容器中数据的模板函数,主要由头文件(“algorithm”,“numeric”,“functional”)组成。STL大概包含了100个实现算法的模板函数,eg:STL用sort(...原创 2019-01-08 21:10:48 · 181 阅读 · 0 评论 -
BASIC-13 数列排序
题目问题描述 给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1&lt;=n&lt;=200输入格式 第一行为一个整数n。 第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。输出格式 输出一行,按从小到大的顺序输出排序后的数列。样例输入58 3 6 4 9样例输出3 4 6 8 9解题一:用sort函数排序 再循环输出#include&...原创 2019-01-08 15:29:37 · 186 阅读 · 0 评论 -
动态规划算法
一、算法思想 动态规划方法是处理分段过程最优化问题的一类及其有效的方法。在实际生活中,有一类问题的活动过程可以分成若干个阶段,而且在任阶段后的行为依赖于该阶段的状态,与该阶段之前的过程是如何达到这种状态的方式无关。这类问题的解决是多阶段的决策问题,是多阶段的决策过程。1“最优先原则”,多阶段过程的最优决策序列应具有以下性质:无论过程的初始状态和初始决策是什么,其余的决策都必须相对于初始决策...原创 2018-06-06 19:28:46 · 936 阅读 · 0 评论 -
字符串基础题目总结
1.字符串长度给定一行长度不超过100的字符串,请你求出它的具体长度。输入格式输入一行,表示一个字符串。注意字符串中可能包含空格。输出格式输出一个整数,表示它的长度。输入样例:I love Beijing.输出样例:15算法1C语言代码#include<string.h>#include<stdio.h>int main(){ char s[105]; gets(s); printf("%d",strlen(s)); re原创 2020-05-10 14:20:02 · 3032 阅读 · 0 评论 -
K-绝对值排序
#include<cstdio>#include<cmath>#include<algorithm>using namespace std;int main(){ int n, i, j, a[100], temp; while(scanf("%d",&n)&&n!=0) { for(i=...原创 2020-05-07 13:35:09 · 199 阅读 · 0 评论 -
M进制转换为R进制
#include <iostream>#include <cstring>#include<cstdio>const int maxn = 1000;char arr[maxn];using namespace std;void sol(int n, int r){ int tot=-1; int temp = n; me...原创 2020-05-07 12:53:47 · 275 阅读 · 0 评论 -
k-手机短号
大家都知道,手机号是一个11位长的数字串,同时,作为学生,还可以申请加入校园网,如果加入成功,你将另外拥有一个短号。假设所有的短号都是是6+手机号的后5位,比如号码为13512345678的手机,对应的短号就是645678。现在,如果给你一个11位长的手机号码,你能找出对应的短号吗?Input输入数据的第一行是一个N(N <= 200),表示有N个数据,接下来的N行每一行为一个11位的...原创 2020-05-07 12:47:59 · 189 阅读 · 0 评论 -
北京大学C语言学习第15天
动态规划(一)例题数字三角形5例题一、数字三角形(POJ1163)在上面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左下或右下走。只需要求出这个最大和即可,不必给出具体路径。三角形的行数大于1小于等于100,数字为 0 - 9973 88 1 02 7 4 44 5 2 6 56输入格式:5 //三角形行数。下面是...原创 2020-04-16 08:56:42 · 207 阅读 · 0 评论 -
北京大学C语言学习第14天
分治算法分治的基本概念 把一个任务,分成形式和原任务相同,但规模更小的几个部分任务(通常是两个部分),分别完成,或只需要选一部完成。然后再处理完成后的这一个或几个部分的结果,实现整个任务的完成。5分治的生活实例 --称假币 16硬币,有可能有1枚假币,假币比真币轻。有一架天平,用最少称量次数确定有没有假币,若有的话,假币是哪一枚。6分治的生活实例 – 称假币 8 –...原创 2020-04-16 08:53:55 · 156 阅读 · 0 评论 -
北京大学C语言学习第13天
程序或算法的时间复杂度一个程序或算法的时间效率,也称“时间复杂度”,有时简称“复杂度”复杂度常用大的字母O和小写字母n来表示,比如O(n),O(n2)等。n代表问题的规模时间复杂度是用算法运行过程中,某种时间固定的操作需要被执行的次数和n的关系来度量的。在无序数列中查找某个数,复杂度是O(n)7程序或算法的时间复杂度一个程序或算法的时间效率,也称“时间复杂度”,有时简称“...原创 2020-04-16 08:52:24 · 194 阅读 · 0 评论 -
北京大学C语言学习第12天
四则运算表达式求值例题: 四则运算表达式求值输入为四则运算表达式,仅由整数、+、-、*、/ 、(、)组成,没有空格,要求求其值。假设运算符结果都是整数。"/"结果也是整数用递归解决递归形式的问题解题思想:表达式是个递归的定义:表达式 项+-项*/因子因子( 表达式 )整数因此对于表达式可以进行递归分析处理#include <iostream>...原创 2020-04-16 08:50:25 · 145 阅读 · 0 评论