用C语言解决棋盘上马遍历问题

题目三:棋盘上马遍历问题 (1)问题描述 在8*8方格的棋盘上,从任意指定的方格出发,为马寻找一条走遍棋盘每一个并且只能经过一次的一条路径。 (2)算法分析 如果用二维数组board[][]表示棋盘,其元素记录马经过该位置时的步骤号。另对马的各种可能的走法设定一个检索次序,确定...

2018-04-23 11:15:02

阅读数 841

评论数 1

用C语言解决变量三角形问题

题目二:变量三角形问题 (1)问题描述 设A、B、C、D、E、F这六个变量可分别取[1,6]上的整数,将这六个变量排成如下图所示的三角形,求使三角形三条边上的变量之和相等的全部解。 A 1 ...

2018-04-23 11:13:18

阅读数 167

评论数 0

用C语言解决文件合并问题

题目一:文件合并问题 (1)问题描述 有两个磁盘文件A和B,各存放一串字母,要求把这两个文件中的信息合并,输出到一个新文件C中。 (2)算法分析 在.cpp所在的文件夹里建立A.doc和B.doc,并向其中输入字母,再编写一个用于输出文件内容的程序,将文件信息合并。 (3)源代码 磁盘...

2018-04-23 11:11:02

阅读数 658

评论数 0

二维数组中的查找【每日一题】

题目:一个m*n的矩阵,从左到右从上到下都是递增的,给一个数x, 判断x是否在矩阵中。要求效率尽可能的高。 解决方法:从二维数组的右上角或者左下角开始找起, 如果右上角元素大于关键字,说明关键字不在右上角元素所在的列,因此剔除该列; 如果右上角元素小于关键字,说明关键字不在右上角元素所在的...

2017-07-29 12:00:16

阅读数 202

评论数 0

判断一棵树是否是完全二叉树【每日一题】

完全二叉树的定义:对二叉树按照从上到下、从左到右的层次遍历,应该满足一下两条要求: ●某节点没有左孩子,则一定无右孩子 ●若某节点缺左或右孩子,则其所有后继一定无孩子 不满足上述任何一条,均不为完全二叉树。题目:判断一棵树是否是完全二叉树 解决方法:在层序遍历的过程中,找到第一个非满节。满...

2017-07-28 17:10:55

阅读数 419

评论数 0

求一颗二叉树的镜像 【每日一题】

题目: 求一颗二叉树的镜像 解决方法: 创建一个树以后,交换每个节点的左右孩子//递归 void _GetBinaryMirror(Node* pRoot) { if(pRoot) { std::swap(pRoot-&...

2017-07-28 16:10:00

阅读数 150

评论数 0

二叉树三种遍历非递归实现【每日一题】

前序遍历: 根据前序遍历访问的顺序,优先访问根结点,然后再分别访问左孩子和右孩子。即对于任一结点,其可看做是根结点,因此可以直接访问,访问完之后,若其左孩子不为空,按相同规则访问它的左子树;当访问其左子树时,再访问它的右子树。因此其处理过程如下: 对于任一结点P: 1)访...

2017-07-28 16:04:38

阅读数 235

评论数 0

求二叉树的高度/销毁一颗二叉树【每日一题】

template<class T> struct BinaryTreeNode { BinaryTreeNode(const T& data) :_data(data) ,_pLeft(NULL) ,_pRight(NUL...

2017-07-23 13:10:40

阅读数 193

评论数 0

链表翻转(升级版)【每日一题】

题目:链表翻转。给出一个链表和一个数k,比如链表 1→2→3→4→5→6,k=2,翻转后2→1→4→3→6→5,若k=3, 翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→5→6, 用程序实现Node* RotateList(Node* list, size_t k)。 解决...

2017-07-23 13:03:33

阅读数 101

评论数 0

求数组中出现次数超过一半的字符【每日一题】

题目:数组中有一个数字出现的次数超过了数组长度的一半,找出这个字符。 解决方法: 方法1.首先我们想到如果是一个排序好的数组,那么我们只需要遍历一次数组,统计好每个数字出现的次数,如果大于数组长度的一半就输出这个数字。或者只需要直接输出array[N/2]的值即可。 (1)如...

2017-07-22 12:39:42

阅读数 365

评论数 0

求二叉树叶子节点的个数和第k层的节点个数【每日一题】

1.求二叉树中叶子节点的个数 (1)如果二叉树为空,返回0 ; (2)如果二叉树不为空且左右子树为空,返回1; (3)如果二叉树不为空,且左右子树不同时为空,返回左子树中叶子节点个数加上右子树中叶子节点个数 。 2.求二叉树中第k层的节点个数 (1)若树为空或k小于1或k大于树的高度...

2017-07-22 12:01:07

阅读数 267

评论数 0

实现一颗二叉树的层序遍历【每日一题】

题目:层序遍历二叉树给定一棵二叉树,要求层序遍历该二叉树,即从上到下按层次访问该树,每一层单独输出一行,每一层要求访问的顺序为从左到右。我们在遍历的过程中将该层节点的孩子节点压入一个队列,这样就可以实现从上到下一层一层地遍历该二叉树。 初始时,根结点入队列。 然后,while循环判断队列不空时...

2017-07-21 13:31:56

阅读数 116

评论数 0

计算阶乘结果中0的个数【每日一题】

题目:给定一个整数N,那么N的阶乘N!末尾有多少个0呢? 例如:N=10,N!=3 628 800,N!的末尾有两个0解决方法: 两个大数字相乘都可以拆分多个质数相乘,而质数相乘结果为0的只有2*5。那么两个数相乘尾数为0的个数其实就是依赖2和5的因子个数。又因为每两个连续数字就会有一个2,个...

2017-07-21 13:27:10

阅读数 225

评论数 0

判断元素出栈、入栈顺序的合法性【每日一题】

题目:元素出栈、入栈顺序的合法性。如:入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1),则合法。入栈的序列(1,2,3,4,5),出栈序列为(4,5,2,3,1),则不合法。 解决方法:很直观的一种想法,建立一个辅助栈,把输入的第一个序列中的数字一次压入该辅助栈,并按照第二个序列...

2017-07-20 13:54:04

阅读数 145

评论数 0

整数二进制位中1的个数【每日一题】

题目:计算一个整数二进制位中1的个数。要求效率尽可能的高。 且能正确求正数和负数的二进制中1的个数。//二进制中1的个数 int CountOf1One(int num) { //但是如果不知道是多少位的机器,冒然给出的32会让人很费解 //所以修改如下 int coun...

2017-07-20 13:52:01

阅读数 67

评论数 0

【每日一题】查找一个字符串中第一个只出现两次的字符

题目:查找一个字符串中第一个只出现两次的字符。比如:“abcdefabcdefabc”中第一个只出现两次为‘d’,要求时间复杂度为O(N),空间复杂度为O(1) 解决方法:可以使用哈希表统计每个字符出现的次数。因为字符只有256种可能,所以我们可以申请一个256大小的数组来统计每个字符出现的次数(...

2017-07-20 12:57:06

阅读数 592

评论数 0

【每日一题】实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、 Min(返回最小值的操作)的时间复杂度为O(1)

题目:实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、 Min(返回最小值的操作)的时间复杂度为O(1) 解决方法:使用两个栈_data和_min,_min做为辅助栈(每次压入_min的都是_data的最小值)。元素x入栈时,将x和_min栈顶元素做比较,如果x小于等于_min....

2017-07-20 12:23:04

阅读数 584

评论数 0

替换空格【每日一题】

题目:实现一个函数,要求吧字符串中的所有空格替换成“%20”。例如 “hello world ” ——> ”hello%20world%20” 以前一直觉得做这种题目没什么意义,直到前两天学了网络编程才知道这种题目的意义非比寻常。 在网络编程中,如果URL参数中含有特殊的字符,如空...

2017-07-18 12:23:16

阅读数 95

评论数 0

栈与队列【每日一题】

1.两个栈实现一个队列: 思路一、s1是入栈的,s2是出栈的 入队列:直接压到s1里 出队列:先把s1中的元素全部压到s2中,弹出s2中的栈顶元素; 再把s2的所有元素压回s1中 思路二、s1是入栈的,s2是出栈的 ...

2017-07-18 12:20:28

阅读数 75

评论数 0

复杂链表的复制【每日一题】

所谓复杂链表是指:节点域中除了有数据域和指向下一个节点的指针,还有一个指向任意节点的指针 链表结构:struct ComplexList { DataType _data; ComplexList* _pNext; ComplexList* _pRadom; }Compl...

2017-07-17 15:00:13

阅读数 59

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭