算法
刷题,经典算法归纳
顾文繁
功不捐唐终入海
展开
-
c++大数乘法
C++字符串乘法,比大数加法稍微复杂一点点原创 2022-06-22 10:51:58 · 244 阅读 · 0 评论 -
大富翁游戏
大富翁游戏规则如下玩家起始会获得一定资本M金币玩家每一次可以走一个格,或者跳两个格;走一格耗费2个金币能量;跳两个格,耗费3个金币能量;金币只有满足能量消耗时,才能继续往下走玩家每走到一个格,会得到这个格的奖励,每个格的奖励金币数为非负整数当玩家走到这个格后,总金币数不足以支持下一步金币消耗时,则不能继续往下走,游戏结束玩家第一步可以选择走一步进第1格或者跳2步进第2格起始,玩家可以选择在任意一格结束游戏问玩家游戏中,最多能得到多少个金币?#include <bits/std原创 2022-03-09 11:38:44 · 5727 阅读 · 0 评论 -
摩尔斯电码解码
已知摩尔斯电码和字符映射关系如下:A -> 0B -> 1C -> 10D -> 11E -> 100F -> 101G -> 110H -> 111当前我们获取到了一串01数字字符串,需要进行摩尔斯电码解码,请问共有多少种解码方法?这是一道典型的动态规划问题。dp[i]表示第i个字符的解码方式。因此转移方程为dp[i] = dp[i-1] + dp[i-2] + dp[i-3]。这里dp[i] 至少为dp[i-1],因为dp[i]前已原创 2022-03-08 19:51:38 · 2059 阅读 · 1 评论 -
合并区间C++
给出一组区间,请合并所有重叠的区间。请保证合并后的区间按区间起点升序排列。要求:空间复杂度 O(n)O(n),时间复杂度 O(nlogn)O(nlogn)进阶:空间复杂度 O(val)O(val),时间复杂度O(val)O(val)输入:[[10,30],[20,60],[80,100],[150,180]]输出[[10,60],[80,100],[150,180]]思路:先排序,排序好的区间只有两种可能:1.两个区间重合如果区间有交集,判断第二个的右区间是否大于结果集中的右区间,如果原创 2022-03-07 15:03:48 · 2096 阅读 · 0 评论 -
二叉树前,中,后统一非递归版本(只改变顺序)
先序遍历vector<int> preorderTraversal(TreeNode* root) { if(!root) return {}; vector<int> result; stack<TreeNode*> stk; stk.push(root); while(!stk.empty()){ TreeNode* node = stk.top();原创 2021-10-05 11:25:50 · 61 阅读 · 0 评论 -
mixed-integer programming(混合整数规划)
整数规划问题是一个数学优化或可行性规划,其中一些或所有的变量被限制为整数。在许多情况下,该术语指整数线性规划(ILP),其中目标函数和约束(整数约束除外)是线性的。整数规划是NP完全的。特别地,0-1整数线性规划的特殊情况是Karp 21 NP完全问题之一,其中未知量是二进制的,并且只需要满足限制条件。如果某些决策变量(其中一些或所有的变量被限制为整数)不是离散的,则该问题称为混合整数规划问题。...原创 2021-05-12 10:28:13 · 4087 阅读 · 0 评论 -
第八届 蓝桥杯个人赛C/C++ 第一题迷宫 dfs非递归与递归实现
非递归实现在我的另一个博客https://www.cnblogs.com/outxiao/p/13812184.html这里写递归是实现原创 2021-04-14 09:53:12 · 186 阅读 · 0 评论 -
第十一届蓝桥杯研究生组F题C++
送分题。。。。#include <stdio.h>#include <vector>#include <iostream>#include <limits.h>using namespace std;int main(){ int n; cin >> n; vector<int>v(n,0); int max_val = INT_MIN; int min_val = IN...原创 2021-04-07 11:44:53 · 142 阅读 · 0 评论 -
第十一届蓝桥杯研究生组E题C++
用二进制和并差集解决:并查集通用代码int father[N];int visited[N];int find(int n) { if(father[n]==n) return n; father[n]=find(father[n]); return father[n];}void merge(int x,int y){ int x_father = find(x); int y_father = find(y); ...原创 2021-04-06 16:10:19 · 122 阅读 · 0 评论 -
第十一届蓝桥杯研究生组C题C++
网上有各种找规律的解法,我贴出我暴力模拟法#include <iostream>#include <stdlib.h>#include <stdio.h>#include <cstring>int arr[21][21];using namespace std;int main(){ memset(arr, 0, sizeof arr); int start = 1; int i = 0,j = 0; int dire = 1;原创 2021-04-04 12:39:03 · 380 阅读 · 0 评论