C++
开心星人
信安之路,道阻且长
展开
-
整数分解(记忆化搜索、排列组合)
题目:将 3 分解成两个正整数的和,有两种分解方法,分别是 3 = 1 + 2 和 3 = 2 + 1。注意顺序不同算不同的方法。将 5 分解成三个正整数的和,有 6 种分解方法,它们是 1+1+3 = 1+2+2 = 1+3+1 = 2+1+2 = 2+2+1 = 3+1+1。请问,将 2021 分解成五个正整数的和,有多少种分解方法?排列组合解法2020个位置,选4个C42020记忆化搜索f[i][j] 表示用i个数凑出j的方案数(即将j分解成i个正整数的和有多少种分解方法)...原创 2022-06-17 14:22:37 · 575 阅读 · 0 评论 -
最长回文子串
思路:遍历s,以每个s[i]为对称轴,向两边扩散,找最长的但是发现有问题,少考虑了子串长度为偶数的情况原创 2022-06-15 13:38:53 · 691 阅读 · 0 评论 -
省份数量(DFS、BFS、并查集)
DFSBFS并查集并查集一定要看这篇文章先看这篇文章,再去理解下面并查集的代码原创 2022-06-15 13:17:56 · 476 阅读 · 0 评论 -
最长递增子序列(动态规划)
给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。...原创 2022-06-14 17:45:05 · 546 阅读 · 2 评论 -
滑动窗口C++
3. 无重复字符的最长子串原创 2022-06-14 17:40:54 · 819 阅读 · 1 评论 -
蓝桥杯几道全排列的题目
寒假作业注意这一点,不要用三羊献瑞链接原创 2022-06-14 12:45:31 · 1153 阅读 · 1 评论 -
蓝桥杯2015年CA省赛(填坑中)
2、星系炸弹用excel算的A1写死为2014-11-9C1=B1-A1调整B1直到C1=1000将平方和立方转换成字符串,拼接字符串,字符串排序,判断字符串是否等于01234567896、牌型种数想到的是高中数学题目排列组合的知识模糊的记得大概是这样DFS写法7、手链样式模拟即可9、垒骰子...原创 2022-06-11 17:01:43 · 464 阅读 · 1 评论 -
C++ unordered_map哈希表
目录基本用法一道例题基本用法//初始化unordered_map<int, int> umap = { {2, 10},{1, 20},{3,30} };//遍历unordered_map//注意一个用指针一个用点for (auto &item : umap) { cout << item.first << " -> " << item.second << endl;}for(auto it = umap.begi原创 2022-05-28 14:06:21 · 1348 阅读 · 0 评论 -
剑指 Offer 13. 机器人的运动范围 (BFS)
解锁BFS题目:地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?输入:m = 2, n = 3, k = 1输出:31 <= n,m.原创 2022-05-16 19:21:22 · 173 阅读 · 0 评论 -
[数据结构]树和二叉树习题
🌳一:给定二叉树的两种遍历序列,分别是: 前序遍历序列:D,A,C,E,B,H,F,G,I; 中序遍历序列:D,C,B,E,H,A,G,I,F,试画出二叉树B。🌳二、已知一棵有2011个结点的树,其叶结点个数为116,该树对应的二叉树中无右孩子的结点个数是链接🌳三、编写按层次顺序(同一层自左至右)遍历二叉树的算法。思路:1、使用队列,从根结点开始,将根结点入队2、判断队头元素是否有左孩子,若有,将左孩子入队;判断队头元素是否有右孩子,若有,将右孩子入队3、队头元素出队原创 2022-05-01 14:04:35 · 572 阅读 · 0 评论 -
自写全排列
#include<bits/stdc++.h>typedef long long ll;using namespace std;int a[13]={1,2,3,4,5,6,7,8,9,10,11,12,13}; //待全排列 int b[13]; //保存一个全排列 int vis[13]; void dfs(int level,int num){ //level表示现在选到第几个了,num表示目标个数 //如果现在找到的层数已经等于目标个数了,则输出一个全排列 i原创 2022-04-08 20:52:13 · 404 阅读 · 0 评论 -
C++ 螺旋矩阵
大一下一直困扰我的问题,终于在大二下完成了明天蓝桥杯了,希望能保三争二吧,不知道有没有希望#include<bits/stdc++.h>typedef long long ll;using namespace std;int main(){ int n; cin>>n; int l=0,r=n-1,u=0,b=n-1; int tar=n*n; int arr[n][n]; int now=1; while(now<tar){ for(int.原创 2022-04-08 20:34:42 · 2233 阅读 · 4 评论 -
拼数(全排列)
题目: 拼数https://www.lanqiao.cn/problems/782/learning/#include <bits/stdc++.h>using namespace std;vector<int>arr;void i2s(long long a,string &b){ stringstream s; s<<a; s>>b;}void s2i(string a,long long&b){ stri原创 2022-04-07 23:26:41 · 338 阅读 · 0 评论 -
[蓝桥杯2017初赛]迷宫 (dfs)
题目X星球的一处迷宫游乐场建在某个小山坡上。它是由10x10相互连通的小房间组成的。房间的地板上写着一个很大的字母。我们假设玩家是面朝上坡的方向站立,则:L表示走到左边的房间,R表示走到右边的房间,U表示走到上坡方向的房间,D表示走到下坡方向的房间。X星球的居民有点懒,不愿意费力思考。他们更喜欢玩运气类的游戏。这个游戏也是如此!开始的时候,直升机把100名玩家放入一个个小房间内。玩家一定要按照地上的字母移动。迷宫地图如下:UDDLUULRULUURLLLRRRURRUURLDLRDRUD原创 2022-04-06 23:21:31 · 239 阅读 · 0 评论 -
剪格子(简单dfs)
#include<bits/stdc++.h>using namespace std;int m,n; //行数和列数int C=0; //求矩阵和int ans=1e9; //保存结果int vis[10][10]; //做标记,判断是否访问过了 int arr[10][10]; //存放矩阵void dfs(int i,int j,int count,int sum){ if(sum==C/2){ //退出条件 ans=min(ans,count);.原创 2022-04-05 11:46:34 · 369 阅读 · 0 评论 -
C++基于多态的职工管理系统
是跟着黑马程序员写的,大家也可以去看黑马程序员的视频,讲解的很详细!职工管理系统.cpp#include <iostream>#include "workerManger.h"using namespace std;int main(){ WorkerManger vm; int choice = 0; while (true) { vm.Show_Menu(); cout << "请输入你的选择:"; cin >> choice;.原创 2021-11-09 09:24:38 · 252 阅读 · 0 评论 -
LeetCode刷题日记第二天
1、主站第二题给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 3:输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]输出:[8,9,9,9,0,0,0,1]/** * Definition for singly-linked list. * struct ListNode {原创 2021-10-02 23:15:31 · 209 阅读 · 0 评论 -
最大子列和问题
给定N个整数的序列{A1,A2,…,An},求最大子列和算法一int MaxSubseqSum1(int A[],int N){ int ThisSum,MaxSum=0; int i,j,k; for(i=0;i<N;i++){ //i是子列左端位置,j是子列右端位置 for(j=i;j<N;j++){ ThisSum=0; //ThisSum是从A[i]到A[j]的子列和 for(k=i;k<=j;k++) ThisSum+=A[k]; if(原创 2021-08-29 16:54:32 · 109 阅读 · 0 评论 -
LeetCode刷题日记第一天
*** 1、将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 ***/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {}原创 2021-10-01 22:40:50 · 123 阅读 · 0 评论 -
LeetCode刷题日记第四天
1、主站第二百四十题在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 解题思路:从左下角或从右上角开始,例如从左下角开始,若target大则右移,target小则左移。class Solution {public: bool findNumberIn2DArray(vector<vector<int>>& matrix原创 2021-10-04 20:05:02 · 154 阅读 · 0 评论 -
LeetCode刷题日记第三天
1、主站第七十题假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?首先先进行简单的分析,当你想要到达第n阶楼梯的时候,你可以从第n-1走一步到达,也可以从第n-2走两步到达。(在第n-2的时候不可以走两次一步到达,因为你走一步就会到n-1,就会和第一种情况重复了)。所以a(n)=a(n-1)+a(n-2)//法一:无脑递归,但是会超时,因为进行太多重复的运算了class Solution {public: int cli原创 2021-10-03 21:41:45 · 176 阅读 · 0 评论 -
LeetCode刷题第五天(动态规划)(填坑中)
1137. 第 N 个泰波那契数使用递归会超时,用动态规划class Solution {public: int tribonacci(int n) { //动态规划一般需要开数组 int arr[n+1]; arr[0]=0; if(n>=1){ arr[1]=1; } if(n>=2){ arr[2]=1; }原创 2022-01-19 15:42:24 · 261 阅读 · 2 评论 -
第十届蓝桥杯C/C++省赛研究生组(填坑中)
目录试题A:立方和(5分)试题B:字串数字(5分)试题C:质数(10分)试题D:最短路(10分)试题E:RSA解密(15分)试题F:Fibonacci数列与黄金分割(15分)试题G:扫地机器人试题H:修改数组(20分)试题I:灵能传输(25分)试题J:空间跳跃(25分)试题A:立方和(5分)#include<bits/stdc++.h>using namespace std;bool ifCon(int n){ while(n){ int temp=n%10; if(tem原创 2022-01-15 22:01:13 · 2333 阅读 · 1 评论 -
关于C++初学者编写程序发现的小方法
关于C++初学者编写程序发现的小方法1、读取带有空格的字符串getline(cin,string)可以读取一行以回车结束而cin>>string; 读取至空格或者回车都会结束cout << "请输入一个带有空格的字符串:";string str;getline(cin, str);cout << str << endl;2、交换两个数的方法除过常用的使用第三个变量外,在不引入第三个变量的情况下交换两个数(1)a=a+b;b=a-b;原创 2021-04-24 18:41:57 · 126 阅读 · 2 评论 -
简单的链表
老师上课讲的代码,希望对你有所帮助#include <iostream>using namespace std;// 结构体的声明struct time{ int day; int month; int year;};// 使用typedef为结构体声明别名typedef struct student1{ char *name; int number; int age; time t; struct student1 *.原创 2021-07-17 21:09:25 · 104 阅读 · 0 评论 -
猴子选大王
猴子选大王问题描述:要从n只猴子中选出一位大王,它们决定使用下面的方法:n只猴子围成一圈,从1到n顺序编号。从第p只猴子开始,从一到m报数,凡是报到m的猴子退出竞选,下一次又从退出的那只猴子的下一只开始从1到m报数,直至剩下的最后一只为大王。请问最后哪只猴子被选为大王?输入形式:从控制台输入三个整数n,m,p输出样式:输出最后选为大王的猴子编号样例输入:7 4 3样例输出:4//#include<bits/stdc++.h> //万能头文件,只要有这一个头文件就可以了,但这个方法原创 2021-05-22 22:20:01 · 541 阅读 · 0 评论 -
循环右移.
问题描述:假设有一16位的无符号整数,可以对其二进制进行循环右移操作,右移后任然是无符号整数,编写程序从控制台读入要右移的整数和循环右移的位数,求得并输出循环右移后的十进制数据。输入形式:从控制台输入要右移的十进制整数(大于等于0,小于等于65535)和循环右移的位数(大于等于0,小于等于16),两整数之间用一个空格分隔。输出形式:向控制台输出循环右移后的十进制整数样例输入:6 3样例输入:49152样例说明:输入的待右移的整数为6,该无符号整数的二进制形式为:0000000000000110,向原创 2021-05-29 18:59:33 · 1462 阅读 · 0 评论 -
0-1背包问题
题目一个背包总容量为V,现在有N个物品,第i个物品体积为weight[i],价值为value[i],现在往背包里面装东西,怎么装能使背包的内物品价值最大?(0-1背包问题指的是每个物品只能使用一次)思路定义一个二维数组dp[][],大小为N×Vdp[i][j]:把前i个物品(从第1个到第j个)装入容量为j的背包中获得的最大价值从dp[0][0]递推到dp[N][V]现在递推dp[i][j],分两种情况1、第i个物品的体积比容量j大,装不进去 dp[i][]=dp[i-1][j]2、原创 2022-04-02 20:55:35 · 353 阅读 · 0 评论 -
最少的硬币数目问题
文章目录题目贪心动态规划思考题目给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。你可以认为每种硬币的数量是无限的。贪心当给定硬币的币值非常正常的时候我们可以使用贪心算法例如coins = [1, 2, 5,10,20], amount = 56我们尽可能多的选择面额大的硬币即可class Solution {public: int coinChange(vect原创 2022-04-02 19:53:56 · 1427 阅读 · 0 评论 -
快速幂和矩阵快速幂
跟着罗勇军老师学习所得判断奇偶推荐使用位运算判断奇偶取模运算:n%2==1 奇数n%2==0 偶数位运算:n&1==1 奇数n&1==0 偶数分治法求幂int fastPow(int a,int n){ if(n==1) return a; int temp=fastPow(a,n/2); if(n&1==1) return temp*temp*a; else return temp*temp;} 快速幂int fa.原创 2022-04-02 12:10:47 · 651 阅读 · 0 评论 -
C++sort函数使用
sort函数使用基本使用:vector<int> a={3,4,2,5,2,5,7,8};sort(a.begin(),a.end()); //默认从小到大排序sort(a.begin(),a.begin()+4); //对前四个进行排序sort(a.begin(),a.end(),less<int>()); //从小到大排序sort(a.begin(),a.end(),greater<int>()); //从大到小排序int arr[10]={原创 2022-04-01 11:25:58 · 901 阅读 · 0 评论 -
[数据结构] 线性表(顺序结构和链式结构)
//#include <bits/stdc++.h>#include <iostream>#include <string>#define MAXSIZE 100#define OK 1;#define ERROR 0;using namespace std;typedef int Status;typedef struct{ string name; string gender; int age;}Student;typ原创 2022-03-21 21:55:50 · 448 阅读 · 0 评论