算法的乐趣
一即一切2120
加油,用博客记录读书轨迹
展开
-
小心细节:平时问题集合
strlen()在那个头文件里?char a[100]; int len=strlen(str);问len是几?当读入“asss”到a中时呢?int a[100]={0};作为全局变量时能实现全部赋值为零么?如果是临时变量呢?作为类的似有成员呢?bool used[100];初始化为false的方法有几种?getchar();能得到‘\n’么?已知有一些字符串形如“球队编号-队员编号 ...原创 2020-05-03 17:04:43 · 114 阅读 · 0 评论 -
动态循环:多个数组之间的组合问题+2018北京理工上机哥德巴赫猜想
题目:多个数组(个数未知可变),每个数组中的个数不一定相同,从每个数组中挑一个,得到一个组合。输出所有的组合形式方法采用递归,如下void 做多次循环(循环次数){次数小于一,直接退出;次数等于一,(即到达出口,只剩最后一个数组)每次先将之前路径内容输出,在输出最后一个数组的一个元素。否则,将当前数组遍历,加入到路径中,并做多次循环(循环次数-1);最后,将这次压入的数据弹出(已...原创 2020-05-02 19:25:41 · 263 阅读 · 0 评论 -
二分查找:比较次数
#include <iostream>#include<algorithm>#include<vector>#include<fstream>using namespace std;#define see(x) cout<<x<<endlclass Sol{public: Sol() {} Sol(in...原创 2020-05-01 19:28:48 · 1189 阅读 · 0 评论 -
精简原则:结构体之学生成绩排序
输入学生个数以及每个学生的姓名和3门课程成绩:输出不及格学生的信息;按平均成绩排序,从高到低输出学生信息要点按平均成绩排序等价于按总分排序(只看最后结果不需要求平均成绩或者总分)结构体排序,没有必要交换整个结构体,只需要另外开辟一个下标数组,根据所需对下标排序,最后按这个次序从原来表中读出即可统计是否不及格在读入数据时即可执行从文件读入结构体,直接调用引用即可temp.xxx,文件用完...原创 2020-05-01 18:40:01 · 1301 阅读 · 0 评论 -
链表模拟:前缀表达式,波兰式求解
题目中只含有加减乘除,数字可以是浮点数,都是二目运算这里的想法很直接,采用链表模拟,但要注意的情况很多(不难一个一个分析就好了)从左向右扫描,每次检查三个遇到《符号,数字,数字》,直接运算出结果,代替这三个(注意此时,如果下一个也是数字,就要回到起点再次扫描,因为《数字,数字,符号》的模式不存在)遇到《符号,符号,数字》,跳到第二个符号位置,继续后移遇到《符号,数字,符号》,跳到第二个符...原创 2020-05-01 17:17:43 · 184 阅读 · 0 评论 -
检查函数:真素数问题
找出正整数 M 和 N 之间(N 不小于 M)的所有真素数。真素数的定义:如果一个正整数 P 为素数,且其反序也为素数,那么 P 就为真素数。例如,11,13 均为真素数,因为11的反序还是为11,13 的反序为 31 也为素数。原题地址http://cxsjsx.openjudge.cn/practise2020pool/01A/#include <iostream>u...原创 2020-04-30 19:31:07 · 1156 阅读 · 0 评论 -
hash函数:包含匹配问题
输入两个字符串,问第二个字符串是否可以由第一个的部分得到?可以的话输出剩余多少,不行则说明还缺少几个#pragma once#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int maxSize = 22;class Vol {p...原创 2020-04-22 15:09:53 · 150 阅读 · 0 评论 -
hash函数:映射与算法,利用数组的随机存取
众数问题题目一:统计相同成绩(0~100的整数)的学生集中出现的分数题目二:统计字符串中出现频率,找到最高频的字符题目三:给出一段仅有大小写字母构成的字符串,找出使用频率最高的按键(输出大写)f(x) ,x是一个代指、名字,f(x)记录这个名字的一个属性,这里具体来说:第一题,scoreTimes[score],初始化为0,遇到score1,即做scoreTimes[score1]...原创 2020-04-22 11:31:54 · 368 阅读 · 0 评论 -
动态规划:打表法最长回文串的个数,北京理工上机18-1
对给定的字符串找到其中最长的回文子串,并返回最大长度和个数。#pragma once#include<iostream>#include<string>using namespace std;const int MAXLEN = 22;class SOL {private: string m_str; int m_isTable[MAXLEN][M...原创 2020-04-21 09:36:00 · 159 阅读 · 0 评论 -
字符串处理:从一大串字符中找出数字
字符串处理,找出数字89aaaa67-09.09900 <变为>89 67 -9.099#pragma once#include<iostream>#include<vector>#include<string>#include<algorithm>#include<sstream>usi...原创 2020-03-21 21:01:20 · 412 阅读 · 0 评论 -
字符串hash:学生、课程之间的选课映射问题
输入学生数、课程数按课程编号依次输出选课的学生名字最后给出所有的学生姓名要求输出每个学生报了什么科目输入:4 31 2sam tom2 3sam lis bob3 2bob lissam lis tom bob输出:sam 1 2lis 2 3tom 1bob 2 3#pragma once#include<iostream>#includ...原创 2020-03-12 18:00:22 · 106 阅读 · 0 评论 -
建立二叉树:利用中序和后序遍历
第一版,递归,截得子串#pragma once#include<string>#include<iostream>#include<algorithm>#include<queue>using namespace std;class TreeNode {public: int val; TreeNode *left, *r...原创 2020-03-10 15:03:51 · 142 阅读 · 0 评论 -
硬币凑整问题——背包01
有n种不同面值的硬币,每种一个;试着用这些硬币凑出整数m如果有多种方案,输出字典序最小的那个eg.input:3 53 2 6output: 2 3input:8 95 9 8 7 2 3 4 1output:1 3 5说明一:这里的硬币逻辑上是价值和质量相同的物品w[i]=v[i],用m_w_v[]一个数组存放说明二:字典序最小,先将面值由大到小排序,最后按记录结...原创 2020-03-09 16:40:20 · 454 阅读 · 0 评论 -
背包01动态规划
质量价值16031202100背包可容纳的质量5#pragma once#include<iostream>#include<string>#include<vector>#include<algorithm>#include<stack>using namespace s...原创 2020-03-09 13:54:10 · 112 阅读 · 0 评论 -
贪心法(非0-1背包问题)
给定背包容量50Kg,物品信息物品1,重量10Kg,价值60元物品2,重量20Kg,价值100元物品3,重量30Kg,价值120元注意:可以部分装入图片和题目转自https://blog.csdn.net/zangker/article/details/50223673#pragma once#include<iostream>#include<string...原创 2020-03-09 12:02:14 · 663 阅读 · 0 评论 -
最长公共序列LCS
图片来自https://www.jianshu.com/p/096c945be66b注意:1)如上图表格,字符串的第i个字符在逻辑上是c[i,j]中的i。但是,在物理存储上存储在i-1(下标位置)for (int i = 1; i <= len1; i++) { for (int j = 1; j <= len2; j++) { if (m_str1[i-1...原创 2020-03-06 22:22:53 · 109 阅读 · 0 评论 -
最长回文串
#pragma once#include<iostream>#include<string>#include<vector>using namespace std;const unsigned int MAXSIZE = 101;class LSS{public: LSS(){} LSS(string s):m_str(s){ i...原创 2020-03-06 19:34:38 · 110 阅读 · 0 评论 -
年份加一
编写一个日期类,要求按 xxxx-xx-xx 的格式输出日期,实现加一天的操作,不考虑闰年问题,所有月份设为 30 天。input:2008-09-07output:2008-09-08input:2008-12-30output:2009-01-01input:2008-09-30output:2008-10-01#include <iostream>...原创 2020-02-04 22:23:01 · 271 阅读 · 0 评论 -
字符串长度排序
#include <iostream>#include<vector>#include <string>#include <algorithm>using namespace std;class Solution {private: vector<string> m_stringsVector;public: Sol...原创 2020-02-04 21:10:57 · 184 阅读 · 0 评论 -
重载减法
重载加减之后,返回原对象。复制构造函数在初始化时即使用。#include <vector>#include <iostream>#include <string>#include<cmath>using namespace std;class Angle{private: double m_AngleDegree; con...原创 2020-02-04 20:12:31 · 402 阅读 · 0 评论 -
多项式求值(迭代法)
#include <vector>#include <iostream>#include <string>using namespace std;class Polynomial{private: const int MAXTERMS = 99; vector<double> m_CoefficientVector;//下标即指数...原创 2020-01-21 21:53:44 · 785 阅读 · 0 评论 -
对称数的判断(eg.121)
#include <vector>#include <set>#include<iostream>#include <string>#include <algorithm>using namespace std;class Solution {private: int maxN;public: Solution()...原创 2020-01-19 20:00:27 · 341 阅读 · 0 评论 -
杨辉三角(一个数组)
#include <vector>#include <set>#include<iostream>#include <string>#include <algorithm>using namespace std;class Solution {private: int rows; int firstLine[11...原创 2020-01-19 19:17:22 · 193 阅读 · 0 评论 -
set简单用法
#include <vector>#include <set>#include<iostream>#include <string>#include <algorithm>using namespace std;class Solution {private: const int stampValue[3]= { 8,...原创 2020-01-19 18:48:42 · 145 阅读 · 0 评论 -
cleanCode(5)
N 个人围成一圈顺序编号,从 1 号开始按 1、2、 3 顺序报数,报 3 者退出圈外;其余的人再从 1、2、 3 开始报数,报 3 的人再退出圈外,依次类推。请按退出顺序输出每个退出人的原序号。要求使用环形链表编程。1.之前的第一版#include <vector>#include <cmath>#include<iostream>#incl...原创 2020-01-18 21:53:37 · 105 阅读 · 0 评论 -
cleanCode(4)
bool isNonupleInverseNumber(int x) { int NonupleX = 9 * x;//给变量具体可感的、有意义的名字 int inverseX = getInverseX(x); return NonupleX == inverseX; }/***************************/int f(int N){ int a...原创 2020-01-18 15:50:22 · 109 阅读 · 0 评论 -
文件读写和成绩排序
#include <iostream>#include <vector>#include <cmath>#include<fstream>#include <string>#include<algorithm>using namespace std;typedef struct stu { string n...原创 2020-01-17 21:34:40 · 277 阅读 · 0 评论 -
满数和盈数
一个数如果恰好等于它的各因子(该数本身除外)子和,如: 6=3+2+1,则称其为“完数”;若因子之和大于该数,则称其为“盈数”。求出 2 到 60 之间所有“完数”和“盈数”,并以如下形式输出: E: e1 e2 e3 ......(ei 为完数) G: g1 g2 g3 ......(gi 为盈数) 。1.模拟题,核心是分解因子。直接打表,先找到表然后输出。#include &l...原创 2020-01-17 20:25:00 · 316 阅读 · 0 评论 -
练习:打表与边写边求
输入一个数,和一个数字,如34553 5,得到一个新的数字55(即将数字5抽离出来形成新数)。现输入两组求得到的两个新数的和。数的范围是0~10^10。input: 34545 3 45676 5output:8法一:打表法,想找到需要的信息要得到55,先要的到5,接着得到5出现的次数#include <iostream>#include <string>...原创 2020-01-16 16:48:49 · 158 阅读 · 0 评论 -
cleancode(3)
#include <iostream>#include <vector>#include <algorithm>using namespace std;class Prime{public: Prime(){} Prime(int maxSize) { checkPrimeMaxRange(maxSize); for (int i = ...原创 2020-01-15 20:05:46 · 134 阅读 · 0 评论 -
cleanCode(2)
#include<iostream>#include<cstdio>#include<vector>#include<string>#include<algorithm>using namespace std;const int MAX_SIZE = 10;class BubbleIntArray{public: ...原创 2020-01-15 11:24:21 · 93 阅读 · 0 评论 -
cleanCode(1)
#include<iostream>#include<cstdio>#include<string>#include<algorithm>using namespace std;const int MAX_SIZE = 10;typedef struct stu { string stuName;//变量命名 = 环境领域 + 具象...原创 2020-01-10 18:21:08 · 108 阅读 · 0 评论 -
结构体排序
1,使用sort()#include<iostream>#include<vector>#include<string>#include<algorithm>using namespace std;typedef struct example { string name; int score; double money; b...原创 2020-01-04 22:22:46 · 156 阅读 · 0 评论 -
打表法:碎片字符串,北京理工2019上机
1、碎片字符串形如aabbaaacaa的字符串,可分为五个相同连续字母组成的碎片:‘aa’,‘bb’,‘aaa’,‘c’,‘aa’,其中每个碎片只出现一次,即该字符串包含’aa’,‘bb’,‘aaa’,'c’四个碎片,且输出时按字典序排序。 输入:aabbaaacaa 输出: aa aaa bb c1.模拟过程,每次把得到子...原创 2020-01-04 21:28:52 · 263 阅读 · 0 评论 -
贪心法(服务器最少跳转次数)
找约数的个数O(n^0.5)#include<iostream>#include<cmath>#include<cstdio>using namespace std;int exe(int n) { int ans = 0; int bound = sqrt(n) + 1; for (int i = 1; i <= bound; i++)...原创 2020-01-02 16:20:57 · 240 阅读 · 0 评论 -
成绩排序
[题目]有一组学生名字和成绩,并输出稳定排序序列。稳定的排序——冒泡,插入,基数(桶排序),归并1,冒泡排序#include<iostream>#include<string>#include<vector>#include<cstdio>using namespace std;//globle dataconst unsigne...原创 2020-01-02 14:27:03 · 146 阅读 · 0 评论 -
基础知识 二
1,较大数组应该在main函数外声明,否则可能因为他作为临时变量在堆栈段中占据的空间过大,栈溢出2,string.hmemcpy(b,a,sizeof(int)*k);//a->b 复制k个元素memcpy(b,a,sizeof(a));//a->bmemset(a,0,sizeof(a));//将数组全部填充为零3,在做某一个动作之前要考虑能不能做,因为悔棋有时候不允许...原创 2019-03-24 21:22:14 · 105 阅读 · 0 评论 -
基础走一波 壹
//keep it simple and stupid#include<stdio.h>int main(){ int n=25; printf("%03d\n",n); printf("%.3f\n",n); return 0}02525.000请按任意键继续. . .int x_2(int t) { return t*t;...原创 2019-03-22 22:06:30 · 101 阅读 · 0 评论 -
侯捷c++ 壹
1,c++早期叫c with class(1983),到98年有了第一个标准2, c++ 包括语言和标准库3,c++ STL源码解析4,面向对象:数据和处理数据的函数包装在一起,形成一个对象处理自己的数据。5,复数,不含指针(单一的类)6,字符串含有指针7,class.h class.cpp xxx.h(标准库)8, 类的初始化可以加入默认值 Complex...原创 2019-03-23 11:55:05 · 222 阅读 · 0 评论 -
侯捷 贰—— 带指针的string
1,拷贝构造,拷贝赋值(copy op=)2,如果对象中含有指针,赋值之后多个指针会指向同一个对象,谁来改,谁要用?形成别名的情形,比较危险。3,字符串的长度统计实际: 1)前面记录一个长度 2)末尾以一个‘/0’作为结束符4,带指针的类:拷贝过程一定要手动改写,保证每一个人有自己的空间,而不是共用一块空间。5,检查自我赋值是必要的,可能会发生不确定的行为。6,...原创 2019-03-23 11:57:52 · 174 阅读 · 0 评论