![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mooc程序设计与算法(二)学习
琉璃色的星辉
这个作者很懒,什么都没留下…
展开
-
动态规划 最长上升子序列 学习笔记
题目描述 递推公式 程序代码 #include <iostream> #include <algorithm> using namespace std; const int MAXN = 100; int main() { int a[MAXN]; int maxLen[MAXN]; int n; cin >> n; for (int i = 1; i <= n; ++i) { cin >> a[i]; maxLen[i] =原创 2021-03-03 19:12:54 · 44 阅读 · 2 评论 -
递归+枚举 算24 学习笔记
题目描述 注意:浮点数相等不能用 == 判断,要看两数差的绝对值是否足够小 程序代码 #include <iostream> #include <cmath> using namespace std; double a[5]; //存放四个数; # define EPS 1e-6 bool isZero(double x) { return fabs(x) <= EPS; } bool count24(double a[], int n) { if (n ==原创 2021-02-26 23:11:33 · 64 阅读 · 0 评论 -
递归 放苹果 学习笔记
问题描述 分析:k为盘子数,i为苹果数 k > i 时,f ( i , k ) = f ( i , i ) k ≤ i 时,总放法 = 有盘子为空的放法 + 没有盘子为空的放法,即f ( i , k ) = f ( i , k - 1 ) + f ( i-k , k ) 程序代码 #include <iostream> using namespace std; int f(int m, int n) { if (n > m) return f(m, m); if (m ==原创 2021-02-26 22:45:47 · 54 阅读 · 0 评论 -
递归 爬台阶 学习笔记
问题描述 分析:问题拆解成更小规模同样的问题,即n级台阶的走法 = 先走一级台阶后n-1级台阶的走法 + 先走两级台阶后 n-2级台阶的走法,可以表示为 f(n)= f(n-1)+ f(n-2),边界条件,n = 1时 返回1,n = 2 时返回2,观察递归函数防止无穷递归。 程序代码 #include <iostream> using namespace std; int N; int stairs(int n) { if (n == 1) return 1; if (n == 2)原创 2021-02-26 22:19:27 · 60 阅读 · 0 评论 -
求中缀表达式的值 学习笔记
题目描述 程序代码 #include <iostream> #include <cstdlib> #include <cstring> using namespace std; int factor_value() { //读入一个因子并返回它的值 int result = 0; char c = cin.peek(); if (c == '(') { cin.get(); result = expression_value(); cin.ge原创 2021-02-26 22:02:07 · 82 阅读 · 0 评论 -
逆波兰表达式求值 学习笔记
问题描述 程序代码 #include <iostream> using namespace std; double exp() { char s[20]; cin >> s; switch (s[0]) { case '+': return exp() + exp(); //注意此处exp()读取的顺序 case '-': return exp() - exp(); case '*': return exp() * exp(); case '/': return原创 2021-02-26 16:31:44 · 57 阅读 · 0 评论 -
递归 N皇后问题 学习笔记
#include <iostream> #include <cmath> using namespace std; int N; int queenPos[100]; void NQueen(int k) { //在0 - k-1行皇后已经摆好的情况下,摆第k行及其后的皇后 int i; if (k == N) { //N个皇后已经摆好 for (i = 0; i < N; i++) cout << queenPos[i] + 1 &l原创 2021-02-26 14:00:50 · 79 阅读 · 0 评论 -
熄灯问题 学习笔记
思路 就是当第一行开关按下后灯状态确定,向下逐行可以有一个确定的开关状态使得上一行的灯一定全部熄灭,直到最后一行检查是否也全部熄灭,如果是则得到结果。这里只需要枚举第一行所有开关的状态即可,更巧妙的是可以采用二进制位运算节省空间。 代码 #include <iostream> #include <string> #include <cstring> using namespace std; char oriLights[5]; //原始灯状态 char light原创 2021-02-18 22:45:02 · 61 阅读 · 0 评论