![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法基础题集
初级的编程题:数学问题、字符串、日期、进制、排序等
编程侯
这个作者很懒,什么都没留下…
展开
-
c/c++ 输入两个日期,计算日期相差多少天
1,题目:有两个日期,计算它们之间的差值,如果两个日期是连续的,则按照2天算。日期格式规定为YYYYMMDD,例如202007092,基本思路(1)输入两个日期(2)以小的日期为底,每次加一天,直到与大的日期相等即可(2.1)增加一天后,月份,年份都可能会随之变化。针对闰年平年以及大小月天数都一样,采用一个12*2的二维数组列出12月的润平年的天数。(2.2)当达到月份的天数时,月份加1(2.3)当达到12个月时,年份加13 代码#include <iostream>#in原创 2020-07-09 09:27:29 · 8957 阅读 · 1 评论 -
c/c++实现 输入n个数字,然后找出其中两个数字相加后等于m------【排序算法的妙用】
基本思路:最简单的暴力方法就是,两层循环一个一个试一遍相加后是否等于m,但是复杂度太高O(n^2)思考是否可以遍历一遍就可以找出来呢?可以预设一个开头标记、一个结尾标记,两个标记相互靠拢的方式,如果两个标记所指向的数字相加等于m 那么就找到了这两个数。但是,如何靠拢呢?如果是同步的靠拢,会漏掉很多情况,可能会得到正确结果,但程序也是不可靠的。如果是不同步的靠拢,那么两个标记需要按照规则方式进行不同的移动,但是当前n个数字是乱序的,没有什么好的判断规则,因为你不知道换成下一个数的时候是大了还是小.原创 2020-07-06 10:52:42 · 1372 阅读 · 0 评论 -
c/c++判断子串在主串中的位置(朴素模式匹配算法)-----通俗易懂(口诀记忆)
1,说明如果字符串b是字符串a的子串,则返回b第一次出现在a中的位置。否则 不是子串注意 空串是任何串的子串,且出现的位置为0.2 基本思想假设a是主串,简单的方式是:想用一个外层循环遍历字符串a的每一个字符,在遍历过程中,在使用一个内层循环,以当前主串中a的字符为起始,去和子串b进行一一对比,如果对应对比成功 就找了3代码#include <iostream>#include <stdio.h>#include <cstring>using name原创 2020-07-01 12:00:22 · 2849 阅读 · 0 评论 -
C/C++语言程序实现矩阵相乘----通俗易懂(口决记忆)
一:先看下面两个矩阵相乘:矩阵A和B都是两行两列,矩阵相乘时,A的行元素乘以B的列元素,然后相加。即202+51=45作为C11(矩阵C的第一行第一列)201+54=40作为C12(矩阵C的第一行第二列)152+101=40作为C21(矩阵C的第二行第一列)151+104=55作为C22(矩阵C的第二行第二列)学过线性代数的,肯定非常熟悉!二:例题三:解题思路:(1)使用a【8】【8】和b【8】【8】 两个二维数组,接受用户使用键盘输入2个矩阵。二维数组c作为结果矩阵。(2)思路:通原创 2020-06-27 11:25:59 · 3910 阅读 · 0 评论 -
判断是否是闰年---c、java、c++等,以经典的方式实现
一:首先明确 什么是闰年?记住两句话:1、能被4整除,但不能被100整除;2、能被400整除;二:怎么实现?if else+ 运算符% 、&& 、||#include <iostream>using namespace std;int main() { int year; cin >> year; if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) cout原创 2020-06-27 09:42:07 · 494 阅读 · 0 评论 -
输入正整数n(n大于等于2),求不大于n的全部质数(素数)【其中一种优化算法:筛选数组法】
1, 质数(素数)概念:质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除。例如:3 只能被1和3整除,5,7,9 这些都是。4,6这些都不是质数(注意2是质数)。2 基本思想:利用数组存储所有数值,筛选出全体质数(1)输入n,创建数组p,数组的内容从0开始依次增1(2)循环遍历数组p,从下标(记为i)为2的开始(2.1)如果当前的 p[i] 不是质数,continue 筛选下一个(2.2)检查数组p中从下标i之后的元素是否为素数。(2原创 2020-06-26 12:07:15 · 3377 阅读 · 0 评论 -
C语言数组 :用户输入一个数, 我要用这个数当数组的长度。怎么办呢
C语言不支持动态数组,也就是说,数组在定义时就要指定长度,把输入数作为它的长度那就说明定义时没有指定长度,这是不合法的。使用 指针+动态分配malloc int* p; int n; scanf("%d", &n); p = (int*)malloc(sizeof(int) * n);...原创 2020-06-26 11:25:55 · 6168 阅读 · 2 评论 -
输入正整数n(n大于等于2),求不大于n的全部质数(素数)【其中一种优化算法】
1, 质数(素数)概念:质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除。例如:3 只能被1和3整除,5,7,9 这些都是。4,6这些都不是质数(注意2是质数)。2,基本思想:(1)首先2肯定是一个质数,先打印出来(2)使用循环,从3开始到不大于n。优化要点:不要都遍历到,把偶数的给排除,4,6。。。这些都不是质数(2.1)判断当前这个数是不是质数:使用循环,做模运算,如果==0 就不是质数 退出。优化要点:只检测到根号下就可以了。(原创 2020-06-26 10:51:49 · 4850 阅读 · 0 评论 -
输出质数(素数)编程题中,判断当前数是否为质数时,只验证要除到根号 原因分析
int main() { int n=0; //输入的n cin >> n; cout << 2 << endl; // 先输出2 for (int i = 3; i < n; i += 2) {//使用循环检测(<=n)的所有数。优化要点:排除大于2 的偶数,减少不必要的运算 int j; for (j = 3; j < sqrt(i); j++) {// 使用循环。优化要点:只检测到根号下就可以了。 if (i%j ==0){.原创 2020-06-25 10:56:05 · 1549 阅读 · 1 评论