数据结构与算法笔记
数据结构与算法笔记考完蓝桥杯,混完省三参与奖,开始重新补数据结构与算法,目标是Leetcode Knight
数学相关算法LCM(最小公倍数)使用公式LCM(a, b) = |a * b| / GCD(a, b)然后使用辗转相除法球的最大公约数
b = 0, GCD = a;
a = b, b = a % b, 递归至b = 0;int gcd(int a, int b){ while(b != 0){ int temp = b; b = a% }}
可以看作是一个长方形,长边是a,短边是b。如何使用一个正方形将该长方形填满,所求的最大的正方形边长就是a和b的最大公约数。先使用
小技巧需要将一个数字按位分离,可以使用to_string()函数
快速幂int quick_power(int x, int pow){ int res = 1; while(pow){ if(pow & 1) res * ...
C语言实现简单的扫雷小游戏
C语言实现简单的扫雷小游戏效果要求
各功能实现
打印菜单
初始化mine与show
打印show
埋雷,记录输入的坐标
代码解释
1.
C++笔记(1):C++比C多的特性
C++比C多的一些特性
命名空间贴一个ai写的,太多了😉
C++中的命名空间(Namespace)是一种机制,用于组织代码元素(如变量、函数、类等),以避免名称冲突并提供一种控制作用域的方式。命名空间帮助开发者在大型项目或使用外部库时,能够有效地管理标识符的可见性和访问权限。以下是关于C++命名空间的一些关键点:
为什么需要命名空间?
解决命名冲突:当不同的库或者程序的不同部分使用相同的名称时,命名空间可以用来区分这些同名的标识符。例如,你可能在自己的代码中定义了一个叫做log的函数,同时又想使用标准库中的std::log数学函数,这时命名空间就显得尤为重要。
组织代码:命名空间有助于将相关的代码元素组织在一起,提高代码的可读性和可维护性。比如,所有与输入输出相关的函数和类都在std::iostream命名空间中。
如何定义和使用命名空间?
定义命名空间:使用namespace关键字后跟命名空间的名称,并以一对花括号 {} 包裹其中的成员。例如:
namespace MyNamespace { int value = 10; void myF ...
动态规划问题
动态规划问题解题思路
先分析dp各下标及其对应值代表的含义
写出状态转移方程
初始化dp数组
确认遍历顺序
打印dp数组来debug
示例跳台阶
问题给定一个共有 𝑛 阶的楼梯,你每步可以上 1 阶或者 2 阶,请问有多少种方案可以爬到楼顶?
解题思路
分析题目,求解到达最后一个台阶的方案,简化为到达第i哥台阶的方案数;设置dp数组,设置为一维数组dpn + 1,dp[i]代表到达第i个台阶的方案数
第i个台阶只能由第i - 1或i - 2各台阶跳上去,因此dp[i] = dp[i - 1] + dp[i - 2];
初始化dp数组,第一个台阶只有一种方案,第二个台阶有两个,因此dp[1] = 1;dp[2] = 2;
确认遍历顺序,dp前两个已经确定,直接从dp[3] 开始往后循环遍历(从前往后跳,后面台阶方案数需要使用到前面台阶方案数的数据)
打印dp数组来debug
砝码称重
问题题目描述
你有一架天平和 N 个砝码,这 N 个砝码重量依次是 W1, W2, · · · , WN。请你计算一共可以称出多少种不同的重量?注意砝码可以放在天平两边。输入格式输入的第一行包含一个整数 N。第二行包含 N 个整数:W1, W2, W3, · · · , WN。输出格式输出一个整数代表答案。
样例输入
31 4 6样例输出10提示
样例说明
能称出的 10 种重量是:1、2、3、4、5、6、7、9、10、11。1 = 1;2 = 6 4 (天平一边放 6,另一边放 4);3 = 4 1;4 = 4;5 = 6 1;6 = 6;7 = 1 + 6;9 = 4 + 6 1;10 = 4 + 6;11 = 1 + 4 + 6。
评测用例规模与约定
对于 50% 的评测用例,1 ≤ N ≤ 15。对于所有评测用例,1 ≤ N ≤ 100,N 个砝码总重不超过 100000。
题目分析
对于该问题,每个砝码都有三种选择,不放、放左边、放右边,如果以左边为基准,则放在左边 ...
CSP201412-2_by_C
问题描述
试题编号:201412-2试题名称:Z字形扫描时间限制:2.0s内存限制:256.0MB问题描述 在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan)。给定一个n×n的矩阵,Z字形扫描的过程如下图所示:
对于下面的4×4的矩阵,
1 5 3 9
3 7 5 6
9 4 6 4
7 3 1 3
对其进行Z字形扫描后得到长度为16的序列:
1 5 3 9 7 3 9 5 4 7 3 6 6 4 1 3
请实现一个Z字形扫描的程序,给定一个n×n的矩阵,输出对这个矩阵进行Z字形扫描的结果。
输入格式
输入的第一行包含一个整数n,表示矩阵的大小。
输入的第二行到第n+1行每行包含n个正整数,由空格分隔,表示给定的矩阵。
输出格式
输出一行,包含n×n个整数,由空格分隔,表示输入的矩阵经过Z字形扫描后的结果。
样例输入
41 5 3 93 7 5 69 4 6 47 3 1 3
样例输出1 5 3 9 7 3 9 5 4 7 3 6 6 4 1 3
评测用例规模与约定 1≤n≤50 ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Hello HexoCreate a new post$ hexo new "My New Post"
More info: Writing
Run server$ hexo server
More info: Server
Generate static files$ hexo generate
More info: Generating
Deploy to remote sites$ hexo deploy
More info: Deployment