摘要:
/* Author:yzm 求阶乘末尾0的个数 因式分解,有多少对2和5,末尾就有多少个0 而总是2多5少,所以5的个数决定了0的个数 进位思想: 先看有多少个5 (v除以5) 再看有多少个25 (v再除以5) 再看有多少个125(v再除以5) …… (类似于筛法)*/#include <cstdio>int main(){ int n, v, cnt; scanf("%d", &n); while(n --) { scanf("%d", &v); ... 阅读全文
摘要:
double的新认识:以前总听说可以用double骗过高精度小数,不知道是怎么一回事儿,而且意识上double最多可以精确6位小数(oh!我的天!这想法哪儿学来的)。现在发现,double应该用有效数字来衡量会比较好,double可以拥有17位有效数字(最后一位有效数字是小数的话接受下一位数的四舍五入),那么就是说,如果整数部分位数很小,那么,小数部分的精度就可以调得很高,像这个例子 但如果整数很大的话,小数精度就会下降了:所以,在整数部分很大而小数部分又需要比较高的精度的话(17位以内),可以把整数部分和小数部分分开处理最后分别输出就可以了。题意:根据题目给出的公式计算N从1到9的时候e的值 阅读全文
摘要:
同pku1562 Oil Deposits 油田合并(简单深搜)输入:10 12W........WW..WWW.....WWW....WW...WW..........WW..........W....W......W...W.W.....WW.W.W.W.....W..W.W......W...W.......W.输出:3代码:#include<iostream>using namespace std;char map[101][101];int dir[8][2]={{-1,-1},{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1}}; 阅读全文
摘要:
题意:N*M的图中有一些'@',从该位置往四周8个位置延伸,求共有多少块互不连通的‘@’构成的块?简单的dfs便能搞定。。。输入:1 1*3 5*@*@***@***@*@*1 8@@****@*5 5****@*@@*@*@**@@@@*@@@**@0 0输出:0122代码:#include<iostream>using namespace std;char map[101][101]; //定义地图 map[][],标记油田状况 int dir[8][2]={{-1,-1},{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1 阅读全文
摘要:
递归实现:int CountNode(BiTree T) { if(T == NULL) return 0; return 1 + CountNode(T -> lchild) + CountNode(T -> rchild); } 阅读全文
摘要:
分析问题:若一颗二叉树为空,其深度为0,否则,利用其深度等于max{左子树depth,右子树depth}+1,可递归实现:int depth(BiTree T) //树的深度 { if(!T) return 0; int d1 = depth(T -> lchild); int d2 = depth(T -> rchild); return (d1 > d2 ? d1 : d2) + 1; } 阅读全文
摘要:
层次遍历用队列实现:方法一:int visit(BiTree T) { if(T) { printf("%c ",T->data); return 1; } else return 0; } void LeverTraverse(BiTree T) //方法一、非递归层次遍历二叉树 { queue <BiTree> Q; BiTree p; p = T; if(visit(p)==1) Q.push(p); whil... 阅读全文
摘要:
如下图表示一颗二叉树,对它进行先序遍历操作,采用两种方法,递归和非递归操作。。遍历结果为:4526731。。1、递归操作:思想:若二叉树为空,返回。否则1)后序遍历右子树;2)后序遍历左子树;3)遍历根节点代码:void PostOrder(BiTree root) { if(root==NULL) return ; PostOrder(root->lchild); //递归调用,后序遍历左子树 PostOrder(root->rchild); //递归调用,后序遍历右子树 printf("%c ", root->... 阅读全文
摘要:
如下图表示一颗二叉树,对它进行先序遍历操作,采用两种方法,递归和非递归操作。。遍历结果为:4251637。。1、递归操作:思想:若二叉树为空,返回。否则1)中序遍历左子树;2)访问根节点;3)中序遍历右子树代码:void InOrder(BiTree root) { if(root==NULL) return ; InOrder(root->lchild); //递归调用,中序遍历左子树 printf("%c ", root->data); //输出数据 InOrder(root->rchild); //递归调用,中序遍历右子树 }... 阅读全文
摘要:
如下图表示一颗二叉树,对它进行先序遍历操作,采用两种方法,递归和非递归操作。。遍历结果为:1245367。1、递归操作:思想:若二叉树为空,返回。否则1)遍历根节点;2)先序遍历左子树;3)先序遍历右子树代码:void PreOrder(BiTree root) { if(root==NULL) return ; printf("%c ", root->data); //输出数据 PreOrder(root->lchild); //递归调用,先序遍历左子树 PreOrder(root->rchild); //递归调用,先序遍历右子树 ... 阅读全文
摘要:
二叉树数据结构:typedef struct BiTNode{ char data; struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;假设要建立一颗如下的二叉树,输入为:124##5##36##7##我们采用两种方法递归和非递归1、二叉树的先序递归建立过程(递归就是调用栈进行的操作)直接上代码:void CreateBiTree(BiTree &root) { char ch; //要插入的数据 cin>>ch; if(ch=='#') root = NULL; else ... 阅读全文