C
文章平均质量分 52
我是py呀
py_学习,发布一些我在学习中遇到的问题和经验总结,大家一起学习呀~
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
递归讲解与递归实现列表的反转
递归: 特点:当一个复杂的问题可以分解为几个(最简单的就是一个)相对简单的且与原来问题解法相同或者类似的子问题来求解,便称为递归求解。: 递归工作栈与递归过程: 在高级语言中,调用函数与被调用函数之间的链接及信息交换需要通过栈来进行。 字数太多,我们直接上图: 递归算法的效率分析: 时间复杂度: 大致为O(2^n) (斐波那契以及汉诺塔问题) 空间复杂度: O(f(n)) ,f(n) 为递归工作栈中记录的个数与问题规模n的函数关系。 分治法: 一种分解-求解的策略,叫做分治法,用来求解递归原创 2021-04-01 18:13:59 · 3595 阅读 · 0 评论 -
模拟python底层数据类型,大整数的实现!
我们参考C源码的逻辑,试着用python去模拟一下大整数的实现,这里 只实现了加减法的操作。 (感谢作者的专栏,收获很大,参考 慕课网:《Python 源码深度剖析》) (1)类: Int32() 这是设计出来的,用来模仿 int类型 4字节的整形数据。 定义了加减乘除4个基本运算 利用数据描述器,对数据进行限制。最大的取值只有 -2 **31 到 2 **31 -1 当运算结果大于 这个范围,便会抛出异常,提示你 整数溢出 提供一个转换函数,当结果取值大时, 转换为 大整数类型进行计算(PyLongO原创 2021-03-10 16:52:18 · 997 阅读 · 0 评论 -
静态链表和动态链表的创建使用 C语言与python实现
题目,以录入三个学生的成绩,学号为目的,创建链表 (1)C语言(静态链表) // 静态链表 /* 所以的节点都是在程序中定义的,不是临时开辟的, 也不能在用完后释放空间,这种称为静态链表 */ # include <stdio.h> // 声明结构体 struct Student { long int num; float score; struct Student * next; // next 指针 }; int main() { //原创 2021-02-01 10:59:10 · 541 阅读 · 0 评论 -
汉诺塔问题(Hanoi) C语言与Python实现
上 题目与分析: 截取自C语言书籍中,详细的题目描述及解题分析 C语言实现: 尝试过自己解题,但是始终还是琢磨的不是很到位。 总结一下主要是有两点 (1) 去发现规律,想着去用递归,然后如何代码实现递归 (2) 其中 叙述的 A B C,三个塔, 有两个过程, (1)A 借助 B 向 C ,(2) B 借助 A 向 C。 都可以抽象为 一个借助 另一个,向 另另一个三者的关系~ 这也将两种情况抽象的实现为一种,一个函数解决,我没想到这样 下面是书中的解题代码 // 汉诺塔问题 #inclu原创 2021-01-20 13:32:14 · 370 阅读 · 0 评论 -
输出魔方阵,C语言与Python实现
上题目 就是横竖斜的值相加相等 规律: 1.第一行中间一列的值为1。所以用j=n/2+1确定1的列数,得出a[1][j]=1。 2.每一个数存放的行比前一个数的行数减1,列数加1。行数用i=i-1确定,列数用j=j+1确定。 3.如果一个数行数为第一行,则下一个数行数为最后一行。 4.如果一个列行数为最后一列,则下一个数列数为第一列。 5.如果按上面的规则确定的位置上已有数,或上一个数是第一行最后一列,则把下一个数放在上一个数的下面。 解法: 利用二维数组表示实现 将上述五原创 2021-01-19 20:12:47 · 1637 阅读 · 1 评论 -
超细节讲解杨辉三角!C语言与Python实现
33原创 2021-01-18 21:22:50 · 502 阅读 · 1 评论 -
输出菱形图案C语言与Python实现
上题目: 要求, 输入菱形的宽 n,表示最宽地方的 * 个数,例如下图 n = 7 C语言实现 技巧: (1) 将菱形(如上图)分开为 上三角形,和倒三角形实现。 (2) 分别找到 每行输出 空格 与 * 号的规律 #include<stdio.h> int main() { int n, m, c, i; printf("请输入*号的个数,代表菱形宽度:\n"); scanf("%d", &n); //打印上三角形 for(i=1; i<= (n + 1)原创 2021-01-17 20:53:46 · 1354 阅读 · 2 评论 -
水仙花数C语言与python版
水仙花数 就是 100-1000 以内的三位数,例如:153 = 111 + 555 + 333 这样的数叫做水仙花数。 C语言实现 过程很简单,穷举,一个一个数字的循环试 // 水仙花数 #include <stdio.h> #include <math.h> int main() { int b, s, g; for(int num = 100; num < 1000; num++) { b = num/100; s = num/10%10; g原创 2021-01-17 13:26:47 · 420 阅读 · 1 评论 -
翻译密码(简单的 大小写英文字母后移四位,其他字符不变)C语言与Python版本
题目及分析 上图片~~~ c语言实现(利用ASCLL码) // 译密码: 使用ASCLL码,转换 #include <stdio.h> int main() { // 1. 首先接收字符,我把它定义为 str,因为输出类似一个字符串 char str; printf("请输入要进行转换的一段话(英文字母加字符:)\n"); str = getchar(); while (str != '\n') { // 2. 判断是否为 a-z,A-Z ,不是就不动 if ((st原创 2021-01-16 17:18:46 · 4330 阅读 · 3 评论 -
斐波那契数列实现C与python版
Fibonacci数列: 就是前两个数为1, 从第三个数字开始,该数字是前两个数字得和。 c语言实现 很简单,就是设置三个变量,依次循环,第三个变量等于前两个变量的和。 // c语言实现斐波那契数列:计算第n个斐波那契数的值 #include<stdio.h> int main() { int n; long int f1=1, f2=1, f3; printf("请输入想要的斐波那契数(n>=3):\n"); scanf("%d", &n); for(int原创 2021-01-16 15:06:08 · 680 阅读 · 1 评论 -
素数判定C语言与python
题目: 对任意一个大于3的数,判断它是否是素数 分析: (1) 素数:除了1和本身,不能被任何其他数整除 (2) 假设数字是 n, 只用检测是否被 2 ~ n/2 整除即可(甚至是只需要判断到 2~根号n)。 C语言解题 第四步写起来还是比较乱的,要判断定 3,4,5 这几个小的数字。仅个人思路写法 并且要注意类型转换 (int)n/2 #include<stdio.h> // 素数判定 int main() { // 1.获取n的值 int n, i; print原创 2021-01-15 11:19:16 · 286 阅读 · 2 评论
分享