小白是如何一个月备考蓝桥杯的?
我是报的C++ B组,有部分C语言基础,看B站黑马程序员学的C++,跟着y总学语法基础和蓝桥杯辅导课。
总之,学好语法基础,多刷题,多刷题!
之后多看看历年考题,从里面学习算法基础,时间充分的话,看看数论,学习其他算法思想。
动态规划,暴力搜索,贪心,递归,排序,查找... ...必备的算法基础,多刷相关习题,建议一个专题一个专题的练习。
例如,比较三0只小猪哪个最重? 实质上是 比较三个数,哪个最大?
int get_max(int x , int y)
{
int z = 0;
if(x > y)
z = x;
else
z = y;
return z;
}
int main()
{
int a = 10;
int b = 20;
//函数的调用
int max = get_max(a,b);
//输出
printf("max = %d\n",max);
return 0;
}
递归必须 边界(出口) 例如:用递归求 n!
int fact(int n)
{
if(n==1) return 1;
return n*fact(n-1);
}
int main()
{
int n;
cin>>n;
cout<
递归:
1.找重复点(重复——相似——规模变小)
2.找变化
3.找出口
把问题简单化,化成一个一个小问题,抽象成数学模型,再逐步复杂化
//递归函数 void 递归函数(参数列表) { if(结束条件)//满足后执行下列语句,结束当前函数并返回 { //执行函数体,结束函数前该干的事情 } else{ //执行函数体,满足当前操作 //改变参数,进行下次操作 } }
这篇博客写的很 nice,简单易懂,适合新手
蓝桥杯——我该如何枚举_〖雪月清〗的博客-CSDN博客
#include usingnamespacestd;
int main()
{
int a = 5, b = 10, temp;
cout << "交换之前:" << endl;
cout << "a = " << a << ", b = " << b << endl;
temp = a;
a = b;
b = temp;
cout << "\n交换之后:" << endl;
cout << "a = " << a << ", b = " << b << endl;
return 0;
}
srand
#include 头文件
int main()
{
srand((unsigned int) time(NULL));
}
水仙花数 : a * a * a + b * b * b + c * c * c==num
定义和声明可以分开的。先声明两个函数,然后再后面再写函数体就可以了。比如
// 声明
void A();
void B();
//调用
void A()
{
B();
return;
}
void B()
{
A();
return;
}
int max(int a,int b)
{
return a>b?a:b;
}
2.用if来判断
要求出最大值:
int main( )
{
int a,b,temp;
if(a>b)
{
temp=a;
a=b;
b=temp;
} // 得出最大值,让最后的b为最大值
}
#include
#include
#include
using namespace std;
int a,b;
int max(a,b)
{
return a>b?a:b;
}
取根号 函数 sqrt(r*r-y*y)
1.sort函数包含在头文件为#include
2.sort函数的模板有三个参数:
void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);
(1)第一个参数first:是要排序的数组的起始地址。
(2)第二个参数last:是结束的地址(最后一个数据的后一个数据的地址)
(3)第三个参数comp是排序的方法:可以是从升序也可是降序。如果第三个参数不写,则默认的排序方法是从小到大排序。
当需要排序自己需要的类型时,可以重定义compare函数。
例如自定义从大到小排序:
#include
#include
using namespace std;
bool compare(int a,int b);
main(){
//sort函数第三个参数自己定义,实现从大到小
int a[]={47,12,34,17,92,11,28,4,25,25};
sort(a,a+10,compare);
for(int i=0;i<10;i++)
cout<b; // 降序,从大到小
}
1、 return;是正确的,用于void函数的返回,它不返回任何值,但是可以用于在void即返回值为空的函数中在任意点结束该函数
2、return 0:一般用在主函数结束时,按照程序开发的一般惯例,表示成功完成本函数。
return -1::表示返回一个代数值,一般用在子函数结尾。按照程序开发的一般惯例,表示该函数失败;
计算日期相隔的天数、月数、年数
计算某一天星期几:
WEEKDAY( 要计算的日期所在的列数 , 2)
KB MB 字节 字 二进制位数
字节的关系:
1 字节(byte)= 8 位二进制数
1 KB=1024 B
1MB=1024 KB
1GB=1024MB
(可求进制,可求日期)
进制:
闰年:
判断是否是闰年有两种情况:
(1)year%400==0
(2)(year%4==0)&&(year%100!=0)
bool rn(int year){ if((year%400==0)||(year%4==0)&&(year%100!=0)) return true; return false; }
#include
int main() {
int n;
printf("请输入一个1-100之间的整数:\n");
scanf("%d", &n);
int m = 0;
for (int i = 2; i < n; i++ ) {
if(n % i == 0) {
m++;
}
}
if (m == 0) {
printf("%d是素数\n", n);
} else {
printf("%d不是素数\n", n);
}
return 0;
}
一般情况下,在考试中我们尽量使用algorithm中的——sort
#include
#include -- sort 函数的头文件
using namespace std;
int main() {
int a[10] = { 1,3,4,2,5,6,7,9,8,0 };
sort(a, a + 10);
for (int i = 0; i < 10; i++) {
cout << a[i] << " ";
}
return 0;
}
Y总 总结的,超棒!
p q
xp+yq 都为整数
p q 为正整数,那么不能凑出的最大整数为 (p-1)*(q-1)-1
数组下标不能为负值, 如果需要的话,可以用偏移量
前缀和
差分
双指针
哈希 unorder_map
一起考
星期 日期
并查集
背包问题
搜索 dfs bfs
环图 每一点度数是 2 深度优先遍历+栈
最短路 背模板
骗分
线类型 dp : 最长公共子序列 最长上升子序列
区间序列 先枚举长度 再枚举左端点
打暴力
贪心: 加油站((acwing1088) 旅行问题 一个环上有很多加油站) 货舱选址 哈夫曼编码
约瑟夫问题 dp
《骗分导论》
数组,for循环,while 循环,if语句,sort 升序降序,随机数种子,
输入和输出:printf 和 scanf 比 cout 和cin 要快
#define 语句后面 没有分号 例如: #define Day 7
当有浮点数时,最好用 double #include
还在更新中... ...
如有错误,欢迎读者指正!