
C++
吾儿沛安
求求你AC吧,求求了!
展开
-
蓝桥杯七段码
/*先产生所有可能的序列,然后判断是否连通*//*从0000000-1111111*/#include<iostream>#include<fstream>using namespace std;int judge(int,int); void dev(int);int map[5][3]={0};int num[7]={0};int move[8][2]={ {1,1},{1,-1},{-1,-1},{-1,1},{0,1},{0,-1},{-1,0},{1原创 2022-04-04 20:48:52 · 348 阅读 · 0 评论 -
小兰爱跑步
/*小蓝每天跑1千米。周一或者月初(1日)要跑2千米。同时是,也是跑2千米。从2000年1月1日周六(含)到2020年10月1日周四(含)。小蓝总共跑步多少千米?*/#include<iostream>using namespace std;bool judge(int );int month[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};int main(){ int week=6;//记录星期几 int cnt=0.原创 2022-04-02 21:08:13 · 315 阅读 · 0 评论 -
完全背包问题
完全背包问题格式回顾题解插一嘴,这里并不一定要一个二维数组来存贮AC代码(滚动数组版)先来一个奇妙的比喻,完全背包之于0/1背包,就仿佛是apple A15之于A14。格式有n个重量和价值分别为wi,vi的物品。从这些物品中挑选出总重量不超过W的物品,求所有挑选方案中价值总和的最大值。在这里,每种物品可以挑选任意多件。回顾我们之前在解决0/1背包的时候,采用的是记忆化搜索的方式,把当前的情况存放在一个二维数组中,每当便利到这个新情况的时候,就拿当前新情况的值和之前的最优解进行比较,谁的价值更大就保原创 2022-02-22 15:49:06 · 124 阅读 · 0 评论 -
最长公共子序列问题——简单版
最长公共子序列什么是子序列思路AC代码字符串从0开始存储什么是子序列定义还是要搞清楚的字符串s1s2···sn的子序列可以是si1si2···sim(这里的i1,i2,im并不一定要规律递增,只要保证是递增即可,例如2,4,6,9,或1,2,3,5皆可)。区分一个概念,字串是需要连续的,子序列只要保证下标递增即可。思路不用说,隔着屏幕都能嗅到动态规划的味道。首先确定转移方程,我们用dp[m][n]这个二维数组存储每一个状态下的最大子序列的长度。dp[i][j]的定义:字符串s1 ~ si处和字原创 2022-02-22 15:02:17 · 516 阅读 · 0 评论 -
01背包问题——记忆化搜索的妙用
目录最基本的想法思想引申解决方案这是一道很经典的01背包问题,是有限背包。我们可以看到利用记忆化搜索的方法时间是最基本的想法#include<iostream>using namespace std;int n,W;const int MAX_SIZE=100;int w[MAX_SIZE+1],v[MAX_SIZE+1];void solve();int rec(int,int);int main(){ cin >> n >> W原创 2022-02-14 23:25:46 · 555 阅读 · 0 评论 -
挑战程序设计竞赛——迷宫的最短路径
文章目录题目题解类型内存超限版本测试版采用数组记录次数版类/结构体版本All In Allset判重版Over了,还是练得不够????题目题解类型很经典的BFS模板题,最短路径大多数采用BFS解决,但是BFS的缺点是空间复杂度太大,我们必须进行剪枝操作,即标记自己已经走过的点,而且一定要注意,在入队push操作之后就可以标记自己已经走过的点了,否则后面一定会有重复的位置进入队列,从而造成内存超限。内存超限版本#include<iostream>#include<queue&原创 2022-02-10 14:40:30 · 767 阅读 · 0 评论 -
POJ 2386 经典的BFS/DFS
目录题意AC代码题意说白了就是检测连通性,题目给出干的地面和湿的地面。我们编写DFS检测连通性,从W进入,走过的路都标记成.,看看能进行几次DFS,就是最终答案。注意这里需要检测8个方向。AC代码#include<cstdio>void dfs(int,int);int n,m;char f[110][110];int main(){ scanf("%d %d\n",&n,&m); for(int i=0;i<n;++i){原创 2022-02-09 19:20:16 · 430 阅读 · 0 评论 -
在递归中记忆搜索的重要性
用斐波那契数列进行测试,计算到第50项,看看记忆化搜索和纯递归消耗的时间#include<cstdio>#include<cstdlib>#include<ctime>int Num[51];int fun1(int);int fun2(int);int main(){ int result; Num[1]=Num[2]=1; clock_t start=clock(); result=fun2(50);原创 2022-02-09 14:06:12 · 328 阅读 · 0 评论 -
挑战程序设计竞赛——抽签Ⅱ
目录题目解析二分查找AC代码题目解析牌的数量增加到了1000,因此如果使用四个for循环,肯定会超时,当n=1000时,我们的时间复杂度就是n^4^,肯定寄了,所以我们要对代码进行优化,想想看能不能减少一个for(),因此我们发现可以把最内层的for换成查找,这里的查找用的是二分查找,时间复杂度为logn,这样一来时间复杂度就变成了n3logn,一下子快了不少,但是这样交上去还是有问题,我们还要更快,因此,我们可以再淦掉一个for循环,因为4层for循环,内两层for循环就是用来查找是否有值等于m-原创 2022-02-09 12:57:02 · 885 阅读 · 0 评论 -
C++ 指针常量/常量指针 const *point/*const point 一句话整明白
目录 精华——区分方法常量指针——const pointer指针常量——pointer to const顶层const和底层const精华——区分方法从变量名出发,自右向左看,看看是先指针还是先常量例如常量指针——const pointerint * const p变量名是p,向左看,先看到const,我们就知道p是个常量,然后再看到*,我们就知道p是个常量指针——const pointer常量指针意味着p的指向不能变,但是p指向的变量的值可以改变int a=2;int b=3;int原创 2022-01-29 22:20:10 · 2121 阅读 · 0 评论 -
C++ 关于常量指针(const pointer)与指针常量
#include<iostream>using namespace std;int main(){ //按照书上的标准,常量指针(const pointer)指的是这个指针是一个常量,指针常量指的是这个指针指向一个常量 //小声BB:这里可能和百度上的有出入,应该是翻译导致的,本程序依照上述定义。 typedef char* cptr; const char c1='a'; char c2='a'; //下面两行写法不同,但是表示的意义相同原创 2021-10-08 09:11:13 · 362 阅读 · 0 评论