程C笔记
1. 头文件和命名空间
C++ 中的 string 类定义在头文件 string 中,通常使用 std 命名空间。
1 | s3=strcat(s1,s2);//加在后面 |
memcpy例子:1
2
3
4
5int a[8]={1,2,3,4,5,6,7,8};
int b[10]={10,9,8,7,6,5,4,3,2,1};
memcpy(b,a,sizeof(int)*8);
for(int i=0;i<10;i++)
cout<<b[i];
输出:1
1234567821
2.函数
1 | int maxGap(int* p, int n)//传入p[0]的地址,能改变在主函数里的值 |
局部变量,全局变量,如果多个声明,那么优先使用内部的数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14int a=5;
int main(){
int a=10,b=20;
for(int i=1;i<=3;i++){
cout<<a++<<" "<<b<<endl;
{
static a=0;
for(int j=1;j<=5;j++){
a+=j;
}
b+=a;
}
}
}要根据函数返回的类型来决定函数的类型
- 要根据函数内的使用变量来决定函数使用的参数值
1
2
3
4
5
6
7
8//例如:
char* fun(int c){//程C一般不用string,自己写都行
return "yes";
}
int* fun1(int c){
int a[]={1,2,3};
return a;
}C++变量初始化
1 | int a=10; |
C++ 插入排序
1 | void insertSort(int arr[],int n){ |
C++斐波那契数列
1 | int climbStair(int n){ |
汉诺塔问题
1 | void digui(int n,char start,char temp,char target){ |
最大公约数函数
1 |
|
上机课J题
算法原理
- 这是$Stern–Brocot$ 树,用于生成全部有理数的一种函数
OI wiki 链接:Stern–Brocot 树与 Farey 序列 - OI Wiki - 首先规定$\frac{0}{1}$是0,$\frac{1}{0}$是$\infty$,接下来每次在他们中间插入它们的中位分数,即$\frac{a+c}{b+d}$.
其次也可以用三元组来计算这些有理分数,先设定 为初始状态,然后每一个节点设
计算
作为左右节点,有用的部分是计算得到的节点证明
考虑矩阵
- 根是单位阵
- 左边的节点是乘上矩阵
- 右边的节点是乘上
当然,加入的节点还是原来的算法
单调性的话自然成立,可以理解为糖水混合,不会比浓度高的浓,也不会比浓度低的淡
然后为什么一定是互质即最简呢?
根据裴蜀定理
设 𝑎,𝑏 是不全为零的整数。那么,对于任意整数 𝑥,𝑦,都有 $gcd(𝑎,𝑏) ∣𝑎𝑥 +𝑏𝑦$ 成立;而且,存在整数 𝑥,𝑦,使得 $𝑎𝑥 +𝑏𝑦 =gcd(𝑎,𝑏)$ 成立。
这里我们取x=y=1,那么就有新的分子分母也互质。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 ZestfulYK的Blog!