
算法基础
zj12november
日常学习总结
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
二叉树先序遍历
void preorderNonrecursion(BTNode *bt){ if (bt != NULL){ BTNode *Stack[maxSize]; int top = -1; BTNode *p; Stack[++top] = bt; while(top != -1){ p = Stack[top--]; Visit(p); if(p->rChild != NULL){ Stack[++top] = p->rChild; }原创 2021-08-22 12:16:33 · 133 阅读 · 0 评论 -
二叉树的递推公式
void r(BTNode* p){ if (p != NULL){ vist(p); r(p -> lChild); r(p -> rChild); }}原创 2021-08-22 12:09:34 · 395 阅读 · 0 评论 -
广度优先过程
def level_queue(root): #利用队列实现树的广度优先遍历 if root is None: return my_queue = [] node = root my_queue.append(node) while my_queue: node = my_queue.pop(0) print (node.elem) if node.lchild is not None: my_queue.append(node.lchild) if node.rch原创 2021-08-14 23:02:45 · 164 阅读 · 0 评论 -
深度优先过程
def depth_tree(tree_node): if tree_node is not None: print (tree_node._data) if tree_node._left is not None: return depth_tree(tree_node._left) if tree_node._right is not None: return depth_tree(tree_node._right)原创 2021-08-14 22:53:06 · 164 阅读 · 0 评论 -
确定定义的函数中的数组的边界
int quchong(int str[],int t){ for(int i=0;str[i]!='\0';i++){ if(str[i]==t) return 0; } }原创 2019-12-11 17:50:15 · 334 阅读 · 0 评论 -
去重处理
用元素a[i]记录其对应下标i的出现次数#include<stdio.h>#define N 1000/*输出a中非0元素对应的下标*/ int PrintIndex(int a[]){ int i; for(i=0;i<N;i++){ if(a[i]>0) printf("%d",i); } printf("\n");} int main...原创 2019-12-10 13:15:42 · 619 阅读 · 0 评论 -
字母使用频率统计
#include<stdio.h>int main(){ int i; char ch; int count[26]={0}; printf("输入一行,以回车结束:\n"); while((ch=getchar()) !='\n'){ if(ch>='A' && ch<='Z')//若ch是大写字母,转换为小写字母 ch=ch+32;...原创 2019-12-10 12:39:17 · 1056 阅读 · 0 评论 -
字符数组与字符串 统计空格个数
#include<stdio.h>int main(){ char str[81]; int i,count=0; printf("请输入一行字符\n"); gets(str); /*扫描字符数组,统计空格个数*/ for(i=0;str[i]!='\0';i++){ /*'\0'为字符串结束标志*/ if(str[i]==' ') count++; } ...原创 2019-12-04 20:34:03 · 4296 阅读 · 3 评论 -
杂项
C++语言函数不能进行嵌套定义。int a[5],*p=a;则对 a 数组元素地址的正确引用是原创 2019-11-26 17:35:17 · 123 阅读 · 0 评论 -
通过移位运算(左移)实现2的n次方的计算
输入描述:多组输入,每一行输入整数n(0 <= n < 31)。输出描述:针对每组输入输出对应的2的n次方的结果。示例1输入210输出41024#include <bits/stdc++.h>using namespace std; int main(){ int n; while(scan...原创 2019-11-26 16:49:59 · 3949 阅读 · 0 评论 -
输入年份和天数计算该年份中具体的日期(指针实现)
实例代码原创 2019-11-26 16:23:29 · 2123 阅读 · 0 评论 -
二分搜索
int Bsearch(int a[],int low,int high){ /*二分搜索查找x在a中位置*/ if(low>high) return -; /*带搜索区为空*/ else{ int mid=(low+high)/2; if(x==a[mid]) return mid; /*搜索成功*/ if(x<a(a[mid])) ...原创 2019-11-26 12:24:10 · 337 阅读 · 0 评论 -
经典比较算法排序(升序)
#include<stdio.h>#define N 10int main(){ int i,j,t,n; int a[N]; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=0;i<n-1;i++){ for(j=i+1;j<n;j++){ if(a[i...原创 2019-11-26 11:51:59 · 238 阅读 · 0 评论 -
关于pow()的使用
头文件:#include <math.h>pow() 函数用来求 x 的 y 次幂(次方),其原型为: double pow(double x, double y);pow()用来计算以x 为底的 y 次方值,然后将结果返回。设返回值为 ret,则ret = xy。可能导致错误的情况:如果底数 x 为负数并且指数 y 不是整数,将会导致 domain error错...原创 2019-11-17 14:19:37 · 323 阅读 · 0 评论 -
zzulioj1106回文数
题目描述一个正整数,如果从左向 右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数。输入两个整数m和n(m<n),输出区间[m,n]之间的回文数。输入输入两个正整数m和n,输入保证m<n。输出按从小到大的顺序,输出m到n之间的回文数,每个数后面有一个空格。样例输入 Copy100 200样例输出 Copy101 111 ...原创 2019-11-15 22:05:26 · 1096 阅读 · 2 评论 -
zzulioj1097
题目描述输入某位同学各门课的成绩,输出平均成绩。输入的成绩均为五级制成绩,五级制成绩转换为百分之成绩的规则如下:'A'转换为百分之成绩为95分,'B'对应85分,C对应75分,'D'对应65分,'E'对应40分。 输出的平均成绩为一个实数,保留1位小数。要求程序定义一个getScore()函数和一个main()函数,getScore()函数返回一个等级对应的分数,其余功能在main()函...原创 2019-11-13 21:40:45 · 1094 阅读 · 0 评论 -
逆序输出C语言
#include<stdio.h>#include<string.h>int main() { int len,i; char str[100]; gets(str); /*读入一行字符,存入数组str**/ len=strlen(str); for(i=len-1;i>=0;i--) printf("%c ",str[i]); ...原创 2019-11-05 10:35:55 · 553 阅读 · 0 评论 -
zzulioj1054猴子吃桃
题目描述悟空第一天摘下桃子若干,当即吃掉一半,还不过瘾,又多吃一个,第二天又将剩下的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一个,到第n天准备吃的时候只剩下一个桃子。聪明的你,请帮悟空算一下,他第一天开始吃的时候桃子一共有多少个呢?输入输入一个数n(1<=n<=30)。输出输出第一天的桃子个数。样例输入Copy3样例输出Copy10...原创 2019-10-31 12:56:11 · 522 阅读 · 0 评论 -
zzulioj1042数列求和3
题目描述求1-2/3+3/5-4/7+5/9-6/11+...的前n项和,结果保留3位小数。输入输入正整数n(n>0)。输出输出一个实数,保留3位小数,单独占一行。样例输入 Copy5样例输出 Copy0.917#include<stdio.h>int main(){ int n,k=1; double sum=1; scan...原创 2019-10-30 20:11:34 · 890 阅读 · 0 评论 -
zzulioj1041数列求和
题目描述输入一个整数n,输出数列1-1/3+1/5-……前n项的和。输入输入只有一个整数n。输出结果保留2为小数,单独占一行。样例输入 Copy3样例输出 Copy0.87#include<stdio.h>int main(){ int n,k=-1; double sum=0; scanf("%d",&n); for(...原创 2019-10-30 20:01:03 · 1807 阅读 · 0 评论 -
zzulioj1069
题目描述Z同学为了实现暑假去云南旅游的梦想,决定以后每天只消费1元,每花k元就可以再得到1元,一开始Z同学有M元,问最多可以坚持多少天。输入输入2个整数M, k,(2 <= k <= M <= 1000)。输出输出一个整数,表示M元可以消费的天数。样例输入 Copy4 3样例输出 Copy5#include<stdio.h&...原创 2019-10-29 15:51:00 · 1458 阅读 · 0 评论 -
判断素数
#include<stdio.h>int isPrime(int n){ if(n==1) return 0; for(int i=2;i<n;i++){ if(n%i==0){ return 0; } } return 1;}int main(){ int n; ...原创 2019-10-27 16:34:34 · 199 阅读 · 0 评论 -
i!=EOF的使用
计算A+B输入输入数据有多组。每组一行,为整数A, B。输出对每行输入,输出A+B的值,单独占一行。样例输入Copy1 23 4样例输出Copy37提示此类多实例测试解决方案:while(scanf("%d%d",&a,&b)!=EOF){//读入一组测试数据//处理//输出结果}注:EOF是宏定义常量-1,s...原创 2019-10-20 10:25:38 · 670 阅读 · 0 评论 -
求1! + 2! + ……n!zzulioj1050
求1! + 2! + ……n!#include<stdio.h>#include<math.h>int fac(int a){ int fac=1; for(int i=1;i<=a;i++) fac*=i; return fac;}int main(){ int m,n; int sum=0; scanf("%d",&n); f...原创 2019-10-15 15:09:34 · 817 阅读 · 0 评论 -
时间复杂度和空间复杂度详解
没有挤公交来上班过,就不知道生活的压力有多大。 算法的时间复杂度和空间复杂度合称为算法的复杂度。1.时间复杂度(1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多...转载 2018-08-05 13:58:34 · 972 阅读 · 0 评论