一开始准备蓝桥杯,真的只是上去就做题
难死拉倒
而且一道题看半天也想不出来然后看别人写的答案也看不懂
我就开始上网搜各种经验贴
最主要的小白一定要看算法基础上视频
我这个小白就看了视频之后感觉不算一前那种特别难受了
跟着视频
算法笔记
不要乱做题目,新手没有经验是做不出来的,我就犯了这个大忌
记住对于任何学习来说
心流能达到的状态是根据自己的能力稍微难一点点
C++的输入与输出cin和cout遇到很多数据的时候比较慢
C语言的输入和输出更快
注意这几个输入都会遇到空格停止
C++的string函数
char s[100];
string s //动态数组
能做一个加法
s+=‘ab’;
在末尾加上ab
ss.size()//返回字符的个数
s.substr(1,1)//第一个参数是数组的下标
//第二个是长度
//例如
string s=sab;
s.substr(1,2);
//结果为ab
//如果只写一个参数,那就会从这个位置输出到末尾
gets函数可以读空格
但是gets函数有的不让用
getline(cin,s);
//也可以输入空格
pair<type1,type2>q
q={1,2};
q.first
q.second
sort的用法
头文件 memset
在函数之外开辟的所有类型都会初始化为0
memset(a,1,sizeof(a))
参数:数组名,要赋的值 ,sizeof(数组名)
这个函数还可以用来最大值初始化
memset(a,0x3f,sizeof(a));
递归 斐波那契函数
见文章 快速提升代码解题能力
单链表
数据结构组成部分
头指针,截至标志 next指针
插入和删除
栈和队列
在算法竞赛中用数组来表示
学过数据结构的都很容易看懂
单调栈Acwing
就是给你一组数然后你要输出数组中每个元素的第一个比该元素大的数的下标,如果没有就输出0
最简单的暴力
但是以前的时候这个对我来说还是有难度的
现在也是
反正一写算法就心塞
#include<iostream>
using namespace std;
int a[100];
int b[100];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
if(a[j]>a[i]){
b[i]=j;break;
}
}
}
for(int i=1;i<=n;i++)
cout<<b[i]<<" ";
return 0;
}
让我们用栈实现一下
减少一下时间复杂度
在这里插入代码片