- 博客(103)
- 收藏
- 关注
原创 P1009 [NOIP1998 普及组] 阶乘之和
#include <iostream>#include <cstring>using namespace std;int main(){ int arr[10000] = {0}, a, brr[10000] = {0}; while(cin >> a) { int count = 1, count1 = 1; ///count为阶乘数组位数,count1为结果数组位数; memset(arr, 0, si.
2022-04-02 09:52:34
274
原创 (高精度算法)求n阶乘的值
代码:#include<iostream>using namespace std;#define max1 5000int a[max1];int main(){ int n; cin>>n; a[1]=1; int s; //乘积 int x=0; //进位 for(int i=2;i<=n;i++) { for(int j=1;j<max1;j++) {
2022-04-02 09:24:14
122
原创 (leetcode 动态规划)跳跃游戏
代码+题目LeetCode--跳跃游戏(动态规划 贪心算法)_haikuotiankongdong的博客-CSDN博客_跳跃游戏动态规划
2022-03-31 18:47:19
2968
原创 (leetcode 动态规划/贪心算法) 跳跃游戏II
思路LeetCode--跳跃游戏II(动态规划 贪心算法 回溯法)_haikuotiankongdong的博客-CSDN博客方法一:动态规划class Solution {public: int jump(vector<int>& nums) { int dp[nums.size()]; dp[0] = 0;//到达下标0的最小跳数是0 for (int i = 1; i < nums.size();.
2022-03-31 18:46:06
3840
原创 (leetcode dfs/动态规划)括号生成
解答:方法一:dfsclass Solution{public: vector<string>retArr; vector<string> generateParenthesis(int n) { if(n==0) return retArr; dfs("",0,0,n); return retArr; }private: void dfs(st.
2022-03-31 18:05:44
282
原创 (leetcode 字符串处理/动态规划)最长回文子串
解题方法(两种)一、暴力求解n^3时间复杂度class Solution{public: string longestPalindrome(string s) { if(s.length()==0) { return ""; } if(s.length()==1) { return s; } int start=0,
2022-03-31 17:33:43
726
原创 (leetcode 动态规划+贪心算法)下载插件
贪心算法:判断当前下载量1分钟是否可以搞定,如果可以就不需要加倍,反之加倍便是最优选择动态规划:状态转移方程:dp[i] = dp[(i + 1) / 2] + 1;LeetCode-LCS 01. 下载插件_ZSYL的博客-CSDN博客...
2022-03-31 09:59:40
133
原创 (leetcode 动态规划 图)传递信息
C++动态规划(4)---小朋友 A 在和 ta 的小伙伴们玩传信息游戏(图论)_秦枫-_-的博客-CSDN博客
2022-03-31 09:36:36
3963
原创 (字符串处理)h0086. 字符串移位包含问题
收获:两种方法代码:1.巧妙#include<iostream>#include<cstring>using namespace std;int main(){ string s1,s2,s; cin>>s1>>s2; if(s1.size()<s2.size()){ swap(s1,s2); } if((s1+s1).find(s2)==-1) cout<<"false"<<endl;
2022-03-30 11:06:26
461
原创 (字符串问题)古风排版
收获:注意空格的处理或者使用Memset将字符数组初始化为空格,再赋值s的值,注意s不能越界代码:#include<cstring>#include<string>#include<iostream>using namespace std;char c[1005][1005];int main(){ //memset(c,' ',sizeof(c)); int n; cin>>n; getchar
2022-03-30 10:08:26
90
原创 (字符串处理)A-B
收获:cin>>c:不能输入空格getline(cin,s):之后不需要getchar()如果使用str.erase方法,需要注意c++不支持字符串完全删除,需要结合str.find函数使用,s2作为循环变量,用来查找也可以使用标志数组存储字符类型也可以使用两层循环,使用最朴素的c语言逐个判断是否输出代码:#include<iostream>using namespace std;#include<cstring>#include&
2022-03-30 09:13:31
421
原创 Max Sum(动态规划 最长增长子序列)
代码:#include<stdio.h>int main(){ int T,N,i,j,start,end,max,num,sum,temp; scanf("%d",&T); for(j=0;j<T;j++) { max=-1001; temp=1; sum=0; scanf("%d",&N); for(i=0;i<N;i++) {
2022-03-29 19:15:28
1067
原创 Super Jumping(动态规划 最长上升子序列)
参考链接:Super Jumping! Jumping! Jumping! (上升子序列的最大和)_m悟空的博客-CSDN博客收获:1.用两层循环寻找最长增长子序列2.每次找确定元素 前的最大和 维护最大值代码:#include<iostream>#include<cstring>using namespace std;int a[1010],dp[1010];int main(){ int n; while(cin>>
2022-03-29 19:11:59
588
原创 动态规划:矩阵连乘
动态规划算法之矩阵连乘问题思路_额di个神的博客-CSDN博客_矩阵连乘问题问题描述:给定n个矩阵,相连的两个是可乘的。如何确定计算矩阵连乘的计算次序,使得该次序计算矩阵连乘积需要的数乘次数最少。分析:矩阵连乘法问题描述:找到最小化乘法次数的加括号方法1.寻找最优子结构此问题最难的地方在于找到最优子结构。对乘积A1A2......An的任意加括号方法都会将序列在某个地方分成两部分,也就是最后一次乘法计算的地方,我们将这个位置记为k,也就是说手心啊计算A1...Ak和Ak+2...
2022-03-25 21:20:12
206
原创 高级数据结构与算法
更多查找结构:后缀数组、树状数组、线段树、Treap、静态KDTree等图论高级应用:最大流/最小割、强连通分支、最近公共祖先、欧拉序列dneg经典算法:搜索剪枝、动态规划等计算几何、概率论等...
2022-03-25 19:12:37
827
原创 币值转换(特殊情况的考虑)
代码:#include<iostream>#include<cmath>#include<algorithm>#include<cstring>#include<string>#include<stack>using namespace std;char zhuanhuan(char x){ if(x=='0') x='a'; else if(x=='1') x='b
2022-03-23 11:05:04
164
原创 单词长度(考虑特殊情况)
收获:代码:#include<iostream>#include<cstring>#include<string>using namespace std;int main(){ string s; int num=0; while(cin>>s&&s[s.size()-1]!='.'&&s[0]!=' ') { if(num==0) {.
2022-03-23 09:38:15
143
原创 猴子选大王(同约瑟夫环问题变形)
收获:1.//如果编号从1开始,那么0就代表最大编号的数字//如果编号从0开始,那么n就代表最大编号的数字2.beg=(beg+1)%n;(beg-1+n)%n代码://猴子选大王//如果编号从1开始,那么0就代表最大编号的数字//如果编号从0开始,那么n就代表最大编号的数字#include<iostream>using namespace std;#define MAX 1005int flag[MAX]; //标记变量int main(){
2022-03-23 09:00:08
199
原创 字符串的冒泡排序(继续看其他排序方法)
收获:复习冒泡排序,同时提醒理解其他的排序方法,代码:#include<iostream>#include<cstring>#include<string>using namespace std;#define MAX 105string s[MAX];int main(){ int n,k; cin>>n>>k; getchar(); //malloc 只管分配内存,并不能对所得的内存进
2022-03-23 08:21:37
208
原创 说反话加强版(栈、字符串处理(注意特殊情况)、二维数组)
1.栈#include<bits/stdc++.h>using namespace std;int main(){ string s; getline(cin,s); stringstream ss; stack<string> x; ss<<s; while(ss>>s) x.push(s); while(!x.empty()){ cout<<x.top(); x.pop(); if(x.size()!=0)
2022-03-22 21:33:14
131
原创 敲笨钟(字符串处理)
//敲笨钟#include<iostream>using namespace std;#include<cstring>#include<string>int main(){ int n; cin>>n; getchar(); while(n--) { string s,s1,s2; getline(cin,s); int x=s.find(","); .
2022-03-22 19:47:06
100
原创 整除光棍(模型除法)
收获:1.stoll:将string转换为long long2.s+="1"; 或者s.append(1,'1');3.代码:一、字符串转换,暴力解法,只得了15分#include<iostream>#include<string>#include<cstring>using namespace std;int main(){ int x; cin>>x; string s; unsigne.
2022-03-22 08:50:32
97
原创 通讯录的录入与显示 (临界值判断)
收获:注意临界值范围if(x>=n||x<0) //注意范围 printf("Not Found\n");代码:#include<iostream>#include<cstring>#include<string>#include<vector>using namespace std;struct peo{ string name; string bir; char ...
2022-03-21 17:07:11
141
原创 有理数均值(特殊情况的考虑+思路分析)
收获:考虑特殊情况:符号为-分子分母可以约分时,即y=1;(即若分母为1,则只输出分子。)代码:#include<bits/stdc++.h>using namespace std;typedef long long LL;int n;//LL gcd(LL a,LL b) //对最大公因数进行查找。//{// return b?gcd(b,a%b):a;//}int main(){ cin>>n; int m=n; n--;
2022-03-21 16:47:05
119
原创 (需要再看)整数分解为若干项之和(dfs)
代码:PTA | 程序设计类实验辅助教学平台dfs求解问题#include<stdio.h># define MAX_SIZE 100int items[MAX_SIZE];//保存每一项的数值int count=0; //当前输出式子个数int N; //分解的整数void f(int remain_value, int start, int num) { //remain_value: 表示剩余需要分解的数字 // start:表示分解项的第一项
2022-03-21 15:58:51
105
原创 数列求和-加强版(用字符串处理 (但是不能ac)、利用数字规律)
收获:字符串后添加代码:1.一开始打算用字符串处理,但是因为超过整型范围,只能利用数字规律#include<iostream>#include<cstring>#include<string>using namespace std;int main(){ int n,m; cin>>n>>m; int num=0; long long sum=0; string s; .
2022-03-21 15:11:51
76
原创 哥尼斯堡的“七桥问题”(欧拉回路)
收获:代码://哥尼斯堡七桥问题#include<iostream>using namespace std;#define MAX 1005int degree[MAX];int pre[MAX];void init(int n){ for(int i=1;i<=n;i++) { degree[i]=0; pre[i]=i; }}int find(int x){ if(x!=pre[.
2022-03-21 09:54:50
805
原创 关键活动(拓扑排序+最早开始时间=最晚开始时间)(*)
收获1.拓扑排序2.关键活动活动的最早开始时间=活动的最晚开始时间代码://关键活动#include<iostream>#include<queue>using namespace std;#define MAX 102#define INF 99999int mp[MAX][MAX];int in[MAX]; //入度int out[MAX]; //出度int es[MAX]; //最早开始时间,默认为0int le[M
2022-03-21 09:23:23
930
原创 畅通工程之局部最小花费问题(并查集+优先队列 或者prim)(最小生成树和最短路径区别)
收获:prim是从某一点开始选最短的,然后依次增加节点,直到连通Krustal是从一开始就选择最短的路径,不判断点是否存在1.还是要注意find函数2.)代码:一、优先队列//畅通工程之局部最小花费问题//并查集+prim算法//或者并查集+优先队列#include<iostream>#include<queue>using namespace std;#define N 105int n;int pre[N];struct ed.
2022-03-20 18:25:28
210
原创 城市间紧急救援(Dijkstra+总共人数+最短路径条数)
收获:dijkstra算法求单源最短路径问题代码://城市间紧急救援//有出发地,有目的地,则使用dijkstra#include<iostream>using namespace std;#define N 505#define INF 0x3f3f3f3fint n,m,s,d;int mp[N][N]; //存储道路长度int weight[N]; //存储救援队数量int D[N];int P[N];int visit[N];int w
2022-03-20 17:47:35
106
原创 公路村村通(并查集判断是否连通,dijkstra求最少花费)
一般使用并查集相对应的使用dijksta算法收获:1.priority_queue2.并查集中的find代码:一、使用优先队列//公路村村通//1.判断不同公路之间是否相互连通:并查集//2.最小花费问题:因为已经建立了并查集的数据结构,所以使用krustal算法#include<iostream>#include<queue>using namespace std;#define N 1005#define INF 99999int .
2022-03-20 17:12:19
151
原创 旅游规划(Dijkstra)
收获:彻底弄懂最短路径问题 - 加拿大小哥哥 - 博客园dijikstra处理单源最短路径问题SPFASPFA算法学习笔记 - 加拿大小哥哥 - 博客园Bellman-Ford数据结构(十一):最短路径(Bellman-Ford算法) - 简书代码:#include <iostream>#include <cstring>using namespace std;#define N 505#define INF 1000int main(
2022-03-20 10:23:55
142
原创 哈利·波特的考试(Floyed)
收获:多源最短路径问题(floyed算法本质上是通过尝试插值松弛来看看是不是存在一个绕路的点是得这个点到别的点的距离更大或者更小.)代码:#include<iostream>using namespace std;const int maxn=105;#define fff 0x3f3f3f3fint m[maxn][maxn];void Init(int n){ for(int i=1;i<=n;i++) { for(int j=
2022-03-19 17:29:03
138
原创 社交网络图中结点的“重要性”计算(并查集+bfs)
收获:1.判断是否连通,用并查集2.有多少层数 用bfs代码:#include <iostream>#include <queue>#include <cstring>using namespace std;#define N 10005int map[N][N];int visited[N] = {0};int pre[N];int n, m;int find(int x) { if(x != pre[x])
2022-03-19 16:35:02
218
原创 地下迷宫探索(dfs)
收获:如果需要原路返回,则代码:#include<iostream>using namespace std;int n,m,begin1;const int maxnum=1001;int v[maxnum][maxnum];int flag[maxnum];int cnt=0;int flag1=0;void dfs(int begin1){ flag[begin1]=1; cnt++; if(flag1++) p
2022-03-19 16:14:48
225
原创 常见问题(初始化+并查集find)
1.大数据处理:memset(num,0,sizeof(num));或者num[10000]={0};2.int find(int x){ if(x==pre[x]) return x; else return pre[x]=find(pre[x]);}
2022-03-19 15:12:05
131
原创 六度空间(bfs)
收获:是一道典型的bfs问题,用last记录最新的上一次的最后一个数字,tail记录此次最后一个数字level记录走了几层需要注意的是输出写在最后7-7 六度空间 (30 分)(bfs)(c++简短高效解决)_小火汁猛猛的博客-CSDN博客代码:#include<iostream>#include<queue>#include<cstring>using namespace std;const int maxn=1002;int v[m
2022-03-19 14:38:06
302
原创 列出连通集(dfs+bfs)
收获:dfs是逐个访问,输出的时候才置为访问过,不适用任何容器bfs使用队列,push进去的时候flag置为1,表示已经访问过,当pop出来的时候再输出结果代码:#include <iostream>//#include<algorithm>#include<cstring>using namespace std;#include<queue>int v[11][11];int n,e;int flag[11];void df
2022-03-19 10:37:54
77
原创 pta中两种排序方法比较的灵活运用
一、Insert or MergePTA | 程序设计类实验辅助教学平台#include <iostream>#include <algorithm>int main() { int n, i, count, length, a[100], b[100]; int flag = 1; scanf("%d", &n); for (i = 0;i < n;i++) scanf("%d", &a[i]); for (i = 0;i <
2022-03-16 11:27:06
128
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅