- 博客(15)
- 收藏
- 关注
原创 数学建模123
目标:刻画“男胎 Y 染色体浓度 V与孕周 tBMI及相关质量指标的关系”,给出可解释的函数关系,并做统计显著性检验。响应变量VVV:Y 染色体浓度(比例,0–1 区间)核心自变量ttt:孕周(把“11w+6”解析为11671176周的连续数)BMIBMI:孕妇 BMI 值(可选)协变量年龄、读段数与比对率(L/M/N/O)、GC 指标(P 及 13/18/21 染色体 GC)、X/Y 染色体 Z 值等——第一问先做核心关系,协变量留作稳健性/改进。
2025-09-04 20:50:04
567
原创 求x二进制中1的个数的方法(汉明重置/popcount)
因为32位数最多也只能有32个1,用6位表示就足够了;最终返回的就是1的总数。为什么模 63?因为最多有 32 个 1,所以不需要完整地累加全部高位;通过模 63 可以快速提取出低 6 位的和(0~32 之间);是该算法的一种优化写法,避免逐位累加。这是 HAKMEM #169 的原始形式,利用了多位并行加法的技巧;用移位和掩码模拟了逻辑加法器;是一种无需循环的快速人口计数(population count)方法;能适用于早期没有硬件 POPCNT 指令的处理器;
2025-06-10 18:10:57
1194
原创 二叉搜索树,二叉平衡树及红黑树(map 和 set 实现)(2)
但是插入删除同样节点红黑树比AVL树旋转更少,因为AVLTree更严格的平衡其实是通过多旋转达到的,所以实际红黑树得到了更广泛的应用。其次红黑树实现上更容易控制。分析可知,只有左孩子/只有右孩子一定只有两种情况(看视频)黑(父亲)红(左孩子) 黑(父亲)红(右孩子)
2025-04-22 22:30:46
319
原创 二叉搜索树,二叉平衡树及红黑树(map 和 set 实现)(1)
了解了 map的operator[]的三层应用后,也就是说,我们在对map进行插入时,可以直接调用 operator[] 进行插入。需要注意的是,multimap中没有operator[],因为当有多个相投的key时,不知道返回哪一个value。为了方便实现,我们这里在每个节点中引入平衡因子(这个只是一种方式,并不是必须,下面的。1.递归(隐形调用栈)(但是当二叉树高度较高时,容易引起栈溢出)2.迭代(前序和中序往往是借助一个栈)144 二叉树的前序遍历(非递归)145 二叉树的后序遍历(非递归)
2025-04-19 23:00:16
444
原创 C语言输入输出函数的汇总
**`putchar`**:向标准输出写入一个字符,相当于 `putc(char, stdout)`。- **`getchar`**:从标准输入读取一个字符,相当于 `getc(stdin)`。- **`fgetc`**:从指定的文件流中读取一个字符(总是函数)。- **`getc`**:从指定的文件流中读取一个字符(可能是宏)。- **`fputc`**:向指定的文件流写入一个字符(总是函数)。- **`putc`**:向指定的文件流写入一个字符(可能是宏)。
2024-06-13 08:03:55
385
原创 二进制(字符型、数字型)转成十进制(编程)
看这篇文章前,可以先看一下(关于取出二进制和十进制中的每一位)这里我们只讨论无符号二进制一:数字型(从左向右这里说的数字型是用户(即对计算机不太了解的人)输入101,但其实 输入的 101 是字符。scanf() 函数的声明。
2024-05-24 00:45:22
728
原创 有关指针的传值调用和传址调用
在此之前,我所遇到的都是传入的变量都是类似 int, char等(实参),然后函数参数即取出它们的地址(形参,一级指针)。先给出结论,想要通过函数修改某个变量的值,都是传入该变量的地址(实参),然后函数参数(形参)是比变量更高一级的指针。本质上是传入"hello word" 的首字符地址。上述代码中,想要通过GetMemory函数修改str(一级指针),所以应该传入 &str。今天在学习动态内存管理的时候,遇到下面的代码,发现可以对标题问题有更深刻的理解。下面给出代码(有问题的代码,这是一道面试题)
2024-05-21 10:14:17
334
原创 C语言,函数如何返回数组下标(坐标)
另外,我觉得可以将find_num函数返回指针(地址),然后用返回的地址 - 二维数组的第一个元素的地址,再与行 r 和列 c 做运算,也可得到坐标。注意,因为是地址传参,修改了参数数值,所以如果需要再次调用函数并地址传参时,需要重新对参数(r, c)进行初始化。对于杨氏矩阵来说,我们关注它的右上角(在行中最大,列中最小)和左下角(在行中最小,列中最大)。有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,方法二、利用地址传参,修改参数,从而达到返回坐标的效果。要求:时间复杂度小于o(N);
2024-05-13 17:06:47
557
原创 C语言,常量字符串不可修改
在这段代码中,你试图对一个常量字符串进行操作,这是不允许的,因为常量字符串是不可修改的。你需要将字符串存储在一个可修改的字符数组中。而在求sz时,可以用 strlen 或者 sizeof(arr) / sizeof(arr[0])今天,在做这道题目时,遇到了这个问题,特此记录一下,加深印象,以防再次犯错。
2024-05-13 15:06:54
391
原创 关于整型提升、算数转换
这里对C语言的常见类型以 int类型 为分界线,字节数小于int类型的转化成int类型,称为。1、全局变量,静态变量(static)都是放在静态区,不初始化的时候,默认被初始化为0.-1是负数即int类型,而 这里的4是unsigned int类型,这里就发生了算数转换。也就是说-1(int类型)算数转换成了4,294,967,295(unsigned类型)3、sizeof这个操作符计算返回的结果是size_t类型的,是无符号整型的。2、局部变量,是放在栈区,不初始化,默认是随机值。
2024-04-11 09:32:21
536
1
原创 康托展开式
/第2位是2,小于2的数只有一个就是1,所以有1 * 1!计算式子:2 * 2!//又例如,排列357412968是{ 1,2,3,4,5,6,7,8,9 }排列中第98884个排列。//第1位是3,比3小的数有1和2这2个,以1、2这样的数开始的排列有8!//第2位是3,小于3的数有1和2,但1已经在第一位了,所以只有一个数2,1 * 2!//第2位是5,比5小的数有1、2、3、4,由于3已经出现,因此有3个比5小的数,//第3位是2,小于2的数只有1,但1已经在第1位,所以有0个数,0 * 1!
2024-04-11 08:15:18
793
1
原创 关于取出十进制、二进制中每位的思路
对于十进制可以反复利用 % 和 / 这两个操作符,下面我们来讨论如何对二进制数进行取出每一位(0或1)呢?对于二进制也可以如此,只是将 %10 和 /10 变换成 %2 和 /2,即可取出二进制数中的每一位。然后对 x 进行 >>(左移) 操作,重复过程,统计出 x 二进制中 1 的个数。想法来自一道题目:////写一个函数,返回参数二进制数 1 的个数。这里是利用 & 和 >> 这两个操作符,对于任意的整数,例如11。类比十进制数通过 % 和 / 这两位操作符取出十进制数中的每一位。
2024-04-09 23:52:03
577
原创 关于for循环和while循环continue的区别
对于while循环来说,执行完continue语句,会跳过后续语句i--,使while语句陷入死循环,在下面的例子中,i始终是1。对于for循环, 执行完continue语句后,也会跳过后续语句,但与while循环不同的是,程序会继续执行for循环的表达式3(i++)今天又遇到了这个问题,由于是初学C语言,为了加深印象,写了这个博客。运行结果,屏幕会一直打印 hehe。如果有错误的地方,还望见谅。
2024-03-24 22:03:03
489
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人