在这里插入代码片
## 蓝桥杯学习记录
一:测试练习
数列特征
01字串
解题思路:对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:
00000
00001
00010
00011
00100
请按从小到大的顺序输出这32种01串。
根据这个题解,只能利用上次的暴力破解。
具体代码`:
// 01字符.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
using namespace std;
int main()
{
for (int a = 0; a < 2; a++)
{
for (int b= 0; b < 2; b++)
{
for (int c = 0; c < 2; c++)
{
for (int d = 0; d < 2; d++)
{
for (int e = 0; e < 2; e++)
{
cout << a<<b<<c<<d<<e<<endl;
}
}
}
}
}
}
二:视频练习
视频名称及连接
https://www.bilibili.com/video/BV1jE411g76D?p=12
学习心得
通过该视频学会了一个思路,即是栈的应用–递归调用。
该法虽然损耗内存和时间大,但是代码简单省去了其他思考的复杂性,使得在做题的过程中可以简单的s使用,使得提升做题速度。还有就是部分题仅仅适合这种思路。
对应练习:
斐波那契数列
#include<iostream>
using namespace std;
int ans[2005];
int vis[2005];
int f(int n, int a, int b, int p)
{
if (vis[n])
{
return ans[n];
}
vis[n] = true;
if (n == 1 || n == 2)
{
return ans[n] = 1 % p;
}
else
{
return ans[n] = (a * f(n - 1, a, b, p) % p + b * f(n - 2, a, b, p) % p) % p;
}
}
int main()
{
int n, a, b, p;
cin >> n>>a>>b>>p;
cout << f(n, a, b, p);
return 0;
}