编程练习
弹指间LDL
学习C++,嵌入式开发,图像处理,
展开
-
求两点间距离
Problem Description 输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。 Input 输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开。 Output 对于每组输入数据,输出一行,结果保留两位小数。 Sample Input 0 0 0 1 0 1 1 0 Sample Output 1.00 1原创 2016-04-12 23:16:35 · 586 阅读 · 0 评论 -
判断二叉搜索树是否为后序遍历序列
#include <iostream>using namespace std;//给定一个整数数组,判断是否是一个二叉搜索树的后序遍历结果bool JudgeBSTSequence(int* BinSeq,int length){ int* root = NULL; int* leftStart = NULL; int* rightStart = NULL; /原创 2016-09-26 11:55:44 · 476 阅读 · 0 评论 -
将中缀表达式转换成后缀表达式并计算
1、将以字符串形式输入的中缀表达式转换成后缀表达式初始化一个空栈用于存储操作符对于中缀表达式从左向右遍历,每得到一个字符,进行判断 a、如果是数字,则直接加入到后缀表达式中,同时判断下一个 字符是也是数字,如果是,也加入到后缀表达式中,如此循 环判断,将连续的数字字符一并识别存储。b、如果是左括号,则把左括号入操作符栈。c、如果是右括号,则从操作符栈中把符号出栈原创 2016-04-26 13:51:45 · 1017 阅读 · 0 评论 -
剑指offer46-累加和的特殊求法
题目描述:要求在不使用乘除法,for、while、if、else、switch、case以及条件判断语句(A?B:C)的情况下求累加和,通常求累加和的做法是通过公式,或者是递归,循环等方式#include <iostream>using namespace std;/*************方法一******************///利用循环的思路,循环即同一个函数重复执行多次,而在循环原创 2016-08-26 14:48:49 · 502 阅读 · 0 评论 -
剑指offer45-圆圈中剩下的最后一个数
//将0~n-1共n个数字排成一个圆圈,从数字0开始数数,每次从圆圈里删除第m个数字,计算出最后剩下的1个数字。 //分析:首先要注意,在进行数字处理的时候,要让着一串数字成环,而成环的方式是当计数到链表尾部的时候, //返回到头部继续计数。另外,如果是删除的是最后一个元素,那么在删除后,也应该从头开始计数 //#include <iostream>#include<list>using原创 2016-08-26 14:11:46 · 471 阅读 · 0 评论 -
剑指offer43-计算n个色子掷出各个点数和的概率
问题描述:把n个色子掷地上,所有朝上一面的和为S,求出所有可能的S的概率,分析可知,色子有6个面,其数是1~6,而总共有n个色子,那么其和的范围是n~6n,而总共可能出现的组合情况有6^n种。/**************方法一**************/ 通过每次确定一个色子的数字,确定n个色子出现的数字,然后根据其和,相应的次数+1,从第一个色子开始确定,逐个确定色子的数字,一个色子确定后,原创 2016-08-19 20:39:24 · 1477 阅读 · 0 评论 -
剑指offer44-扑克牌顺子判断
问题描述:随机抽出5张扑克牌,判断这5张牌是不是顺子(连续的),其中2~10表示数字本身,A为1,J为11,Q为12,K为13,大小王可以看成是任意数字。 分析:由于是随机抽取的几张牌,因此,需要先对牌进行排序。排序过后,由于大小王比较特殊,可以表示任意数字,假设用0来表示大小王,首先应该统计0的个数,遍历数组的时候,如果碰到对子(即非0而又相等数字,则可以直接判断为非顺子)。如果相邻两个数不是连原创 2016-08-19 21:46:20 · 361 阅读 · 0 评论 -
剑指offer42-翻转单词顺序和字符串的左旋转
翻转句子中的单词顺序,输入一个句子,翻转句子中的单词顺序,但是单个单词中的字母顺序不变,如“I am a student.”翻转后为“student. a am I”。翻转方式为,首先将整个句子当成是一个字符串进行翻转,得到“.tneduts a ma I”。然后,以空格作为分隔符,将每个单词分别进行翻转,得到“student. a am I”,而对于整个句子和单个单词的翻转,其翻转的方式是一样的#原创 2016-08-19 11:15:38 · 271 阅读 · 0 评论 -
剑指offer37-两个链表的第一个公共节点
//输入两个链表,找出他们的第一个公共节点 //最原始的方法是以其中一个链表最为大循环,对于每一个节点在另一个链表中寻找是否有相同节点 /*方法一****/ //如果同时从尾部开始访问的话,则只要找到第一个不同的节点就可以,因为其前一个节点就是从头访问的第一个共同节点 //但是链表只能从头开始访问,而从头访问的话,两条链表到达公共节点的时间点是不一致的 //而根据两天链表的特点,由于二者在原创 2016-08-16 17:10:47 · 270 阅读 · 0 评论 -
直方图最大容量问题
给定n个非负整数,表示直方图方柱高度,方柱宽度假定为1,假设用这个形状的容器盛水,求其最大盛水量。原创 2016-05-16 18:37:54 · 522 阅读 · 0 评论 -
直方图内矩形面积
输入一组直方图数据,其中每列的宽度为1,求所给直方图包含的最各个高度的矩形面积。比如,对于直方图[2,7,9,4,1],它所包含的各个高度矩形的面积为8,14,9,12,5 给定一个直方图及它的总宽度返回相应面积。方法一: 方法一的思路是,从前完后遍历直方图,在相应的位置往前后搜索,遇到直方图高度更低的则停止,通过左右的界限来求其宽度。(方法一代码值考虑了值为0到9的情况)#include原创 2016-05-04 13:57:23 · 1415 阅读 · 0 评论 -
统计二进制数中1的个数
容易想到,将数与1按位与,然后右移,每次都跟1相与统计1的个数,这种方法对于无符号数是可以的,但是对于有符号数而言,其右移后再高位空出部分会添加1,也就是说,该方法对于无符号数而言会陷入死循环。 方法一 由于左移是始终在空出的低位添加0的,那么不妨使用一个1来和待统计的二进制数进行按位与操作,然后将1进行二进制的左移操作,从低位到高位依次统计每个位置是否为1。int CountNumUseFla原创 2016-09-26 15:10:44 · 1051 阅读 · 0 评论