- 博客(11)
- 收藏
- 关注
原创 实践一 递归算法的应用:汉诺塔圆盘问题
在汉诺塔问题中,通过将n-1个圆盘移动到辅助柱子,然后将最大的圆盘移动到目标柱子,最后再将n-1个圆盘从辅助柱子移动到目标柱子,从而完成整个移动过程。此外,对于递归算法的理解和设计需要一定的经验和技巧,需要仔细分析问题的特点和递归的边界条件,以确保算法的正确性和性能。在hanoi函数中,使用递归思想将n-1个圆盘从源柱子移动到辅助柱子,然后将最大的圆盘从源柱子移动到目标柱子,最后将n-1个圆盘从辅助柱子移动到目标柱子。通过观察和分析递归解法的执行过程,加深对递归思想的理解,并总结实践中的心得体会。
2023-12-27 19:49:02
404
1
原创 实践二 分治算法的应用:已知N个数,求第K大数
在本次实验中,我成功应用了分治算法的思想解决了求解第K大数的问题,在实现 find_kth_largest 函数时,我首先选择了一个基准值作为分割点,然后将列表分成小于基准值、等于基准值和大于基准值的三部分。接着,根据第K大数在哪个区间内,递归地在相应的子列表中查找,最后,在找到第K大数时返回结果。编写示例用法代码,创建一个包含一些数字的列表 nums,指定要找到的第K大的数为 k,并调用 find_kth_largest 函数进行验证。将列表分成三部分:小于基准值的数、等于基准值的数和大于基准值的数。
2023-12-27 19:46:21
516
1
原创 【无标题】
通过验证算法的正确性,我确认了两种算法的准确性和可靠性,在分析算法效率的过程中,我发现Prim算法适用于稠密图,因为它以节点为中心,每次选择一个离已有最小生成树最近的节点;通过本次实验,我对图的遍历算法在求解最小生成树问题中的应用有了更深入的理解。Prim算法和Kruskal算法是常用的最小生成树算法,它们分别从不同的角度解决了最小生成树的求解问题。本实验旨在通过实现Prim算法和Kruskal算法,探究图的遍历算法在求解最小生成树问题中的应用。图的遍历算法的应用,最小生成树的求解。
2023-12-27 19:41:38
485
1
原创 【无标题】
数塔问题是一个经典的动态规划问题,通过递归或迭代的方式求解,避免了重复计算,提高了算法的效率,在实现过程中,我掌握了使用二维数组保存状态和使用状态转移方程计算最优解的方法。通过验证算法的正确性,我确认了动态规划算法的可靠性和准确性,在分析算法效率的过程中,我发现该算法的时间复杂度为O(n^2),空间复杂度为O(n^2),其中n为数塔的行数。通过实验,加深对动态规划算法的理解,并验证算法的正确性和效率。对比算法得到的最大路径和与手算结果是否一致,验证算法的正确性。动态规划算法的应用——经典的数塔问题。
2023-12-27 19:35:18
405
1
原创 【无标题】
在实现 distribute_candies 函数时,我首先初始化了每个人的糖果数量,并设置初始分发的糖果数量为 1,以及当前分发糖果的人的索引为 0。在每次循环中,我判断剩余的糖果数量是否足够分给当前人,如果足够,就将 give_candy 个糖果分给当前人,并更新剩余糖果数量。实现一个函数 distribute_candies(candies, num_people),该函数接收一个整数列表 candies 和一个整数 num_people 作为参数,并返回一个整数列表,表示每个人最终获得的糖果数量。
2023-12-27 19:30:02
399
1
原创 输入自然数后逆序输出这个数
#include<stdio.h>int main(){ int a; scanf("%d",&a); while(a) //a不等于零时执行此循环 { printf("%d",a%10); a=a/10; } return 0;}
2022-01-15 17:31:07
323
原创 关于如何输出百分号和0.0f%的格式化字符的理解,输出结果为2.684%
#include <stdio.h>int main(){ int a=10433, b=280; float f1; f1=b*1.0/a;//当乘以1.0后,才能使算出f1是想要的结果( 0.026838),否则f1=0.000000 printf("%1.3f",f1*100);//此行中1.3f指f1*100后整数部位一位,小数部位四舍五入保留三位, // 注:如果整数部分不足3位,则在前面补空格,超过3位,则按实际位数输出;如果小数部分不.
2022-01-13 22:12:47
4139
原创 C语言冒泡排序//十个数为例
#include <stdio.h>int main (){ int a[10]; int i, j, t; printf("输入十个整数\n"); for (i=0;i<=9;i++) scanf ("%d",&a[i]);//以上输入十个值并把他们赋予到a[10]里 for (i=0;i<=8;i++)//以下开始对比大小(拿a[0]和a[1]比、拿0和2比、拿0和3比......拿0和9比,拿1和2比,拿1和3比,拿1和9比......拿8和9比).
2022-01-11 22:08:07
3210
1
原创 while循环输出100-200的所有整数
#include <stdio.h>int main (){ int n=100; while(n<=200) { printf("%d\t",n); n++; } return 0;}
2022-01-11 11:18:11
1217
原创 计算2X4X6X...X100的值(上面是错解,附正解)
#include <stdio.h>int main(){ double sum=1; int a=2, n=1; while (n<=50) { n=n+1; sum=sum*a; a=a+2; } printf("%d %d\n",n,a); printf("%lf\n",sum); return 0;}
2022-01-10 16:41:28
1253
原创 输入一个0到999可带小数的数字,输出其个十百位数
多组输入#include <stdio.h>int main(){ double a; int ge, shi, bai; while(~scanf("%lf",&a)) { bai = (int)(a/100); shi = (int)((a-bai*100)/10); ge = (int)((a-bai*100)-shi*10); printf("百位数%d 十位数%d 个位数%d\n",bai,shi,ge...
2022-01-05 12:54:15
762
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人