C++
文章平均质量分 54
ywjun的学习笔记
这个作者很懒,什么都没留下…
展开
-
输入一个字符串,打印出该字符串中字符的所有排列
题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。分析:这是一道很好的考查对递归理解的编程题,因此在过去一年中频繁出现在各大公司的面试、笔试题中。我们以三个字符abc为例来分析一下求字符串排列的过程。首先我们固定第一个字符a,求后面两个字符bc的排列。当两个字符bc的排列原创 2013-04-24 10:51:09 · 13635 阅读 · 2 评论 -
类继承中构造函数和析构函数的调用
类继承中构造函数和析构函数的调用现在,有三个类,类的定义如下class CA{public: CA(){cout ~CA(){cout};class CB:public CA{public: CB(){cout ~CB(){cout};class CC:public CB{public: CC(){cout转载 2013-08-22 16:46:52 · 1028 阅读 · 0 评论 -
求一个字符串中连续出现次数最多的子串
#include "stdafx.h"#include#include#includeusing namespace std;/*基本算法描述: 给出一个字符串abababa 1.穷举出所有的后缀子串 substrs[0] = abababa; substrs[1] = bababa; substrs[2] = ababa原创 2013-08-23 16:11:29 · 998 阅读 · 0 评论 -
关于f(n)=n的几种算法
题目:有一个整数n,写一个函数f(n),返回0到n之间出现的"1"的个数。比如f(13)=6,现在f(1)=1,问下一个最大的f(n)=n的n是什么?/*p228面试题5Consider a function which, for a given whole number n, returns the number of ones required when writing out转载 2013-07-30 16:52:18 · 3599 阅读 · 0 评论 -
某公司数据库密码规定为5位组成的字符串,存储之前,需要将其加密
某公司数据库密码规定为5位组成的字符串,存储之前,需要将其加密,加密算法为:依次将每个字符依次将每个字符的ASC码值乘以2,再加上10,若计算到的新字符的值等于128,则继续将其除以3,否则不进行除法运算。最后将该得到的新字符串中所有字符前后互换(第一位和最后一位,第二位和倒数第二位交换,依次交换),编程求字符串“abcde”加密后的字符串。void Encryption(char *str){原创 2013-09-09 23:24:31 · 1819 阅读 · 0 评论 -
十进制转换为任意进制及操作符重载
十进制转换为任意进制,为了熟悉操作符重装,也加了操作符重装。包括自增(++),运算符重装(+),赋值函数重载(=),输出符(<<)原创 2013-09-05 15:37:51 · 1089 阅读 · 0 评论 -
海量数据处理系列----C++中Bitmap算法的实现
bitmap是一个十分有用的结构。所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。 适用范围:可进行数据的快速查找,判重,删除,一般来说数据范围是int的10倍以下基本原理及要点:使用bit数组来表示某些元素是否存在,比如8位电话号码扩展:bloom fi转载 2013-09-05 20:50:05 · 1031 阅读 · 0 评论 -
打印所有的组合(组合问题C++实现)
写一个程序,打印出以下的序列。(a),(b),(c),(d),(e)........(z)(a,b),(a,c),(a,d),(a,e)......(a,z),(b,c),(b,d).....(b,z),(c,d).....(y,z)(a,b,c),(a,b,d)....(a,b,z),(a,c,d)....(x,y,z)....(a,b,c,d,.....x,y,z)原创 2013-09-05 22:44:25 · 3378 阅读 · 0 评论 -
边看边写(链表反转(递归和非递归))
非递归算法:《剑指offer》面试题16的解法:struct ListNode{ int m_nKey; ListNode* m_pNext;};ListNode* Reverse(ListNode *pHead){ ListNode* pReverseHead =NULL; ListNode* pNode=pHead; ListNode* pPrev = NUL原创 2013-09-11 22:00:49 · 1039 阅读 · 0 评论 -
巧排数字,将1,2,...,19,20这20个数字排成一排,使得相邻的两个数字之和为一个素数
巧排数字,将1,2,...,19,20这20个数字排成一排,使得相邻的两个数字之和为一个素数,且首尾两数字之和也为一个素数。编程打印出所有的排法。排序方法:以贪心算法进行搜索,由于两个数字之和是一个素数,且首尾两数字之和也为一个素数,因此只需要找出以1开头的排列就可以了。使用贪心算法的同时使用回溯法,当遇到相邻两个数的时候就回溯到上一步从新搜索。ofstream fout("D://P原创 2013-09-15 23:10:38 · 5991 阅读 · 0 评论 -
不适用Sqrt函数开方,精度小于指定精度
#includeusing namespace std;//template//想法(通过迭代计算出A的开方)://迭代公式: X(n+1)=X(n)+(A/X(n)-X(n))/2,其中A是输入的待求被开方的数,X(n)是一次与A的开方相近的数,X(n+1)是下一次与A的开方相近的数//①找出需要被开方数A的位数k,则其开方B的值介于有k/2(取上整)位的最大值max和最小值min之原创 2013-09-18 11:15:48 · 4818 阅读 · 0 评论 -
不存储数据流的前提下,从输入流中获得这 n 个等概率的随机数据
有一个很大很大的输入流,大到没有存储器可以将其存储下来, 而且只输入一次,如何从这个输入流中随机取得n 个记录。采用何种方法,才能在不需要存储数据流的基础上,获得这 n个等概率的随机数据呢?That is, If m<=n, just keep it. For m>n, generate a random number R=rand(m) in [0, m), replace a[R]原创 2013-09-20 16:41:12 · 2252 阅读 · 0 评论 -
浅谈CLR
1.什么是CLR CLR(Common Language Runtime)公共语言远行时,是一个可由多种编程语言使用的“远行时”。CLR的核心功能(比如内存管理、程序集加载、安全性、异常处理和线程同步)可由面向CLR的所有语言使用。CLR不关心开发人员使用哪种语言进行编程,只要编译器面向CLR就可以了,所有,开发人员应该使用自己最适合和熟悉的语言进行编程。所有的编程语言在面向CLR编译器转载 2015-05-13 10:51:15 · 868 阅读 · 0 评论 -
螺旋矩阵(由外自内旋转)
如矩阵:12 3 4 51617 18 19 61524 25 20 71423 22 21 81312 11 10 9找出规律,并打印出一个N*N的矩阵;规律就是从首坐标开始顺时针一次增大。(题目出自程序员面试宝典第三版)注:由于觉得书上的程序比较的复杂因此使用自己的方法。//_OUTSIDESPIN.H_#ifndef原创 2013-07-22 22:13:04 · 2529 阅读 · 0 评论 -
虚析构函数
析构函数的作用是在对象撤销之前做必要的“清理现场”的工作。当派生类的对象从内存中撤销时一般先调用派生类的析构函数,然后再调用基类的析构函数。但是,如果用new运算符建立了临时对象,若基类中有析构函数,并且定义了一个指向该基类的指针变量。在程序用带指针参数的delete运算符撤销对象时,会发生一个情况:系统会只执行基类的析构函数,而不执行派生类的析构函数。例12.3 基类中有非虚析构转载 2013-07-23 10:12:54 · 847 阅读 · 0 评论 -
C++操作符的优先级
C++操作符的优先级操作符及其结合性功能用法L L L:: :: ::全局作用域 类作用域 名字空间作用域::name class::name namespace::nameL L L L L . -> []转载 2013-04-17 16:16:37 · 674 阅读 · 0 评论 -
2012年10月9号阿里巴巴笔试(c++)(修改)
1.BMP格式图像,图像深度为24位,一个512*1024的点阵图像所占空间是多少?[html] view plaincopy答:(24/8)B*512*1024=1.5M 2.十进制数字-3转换为3进制的补码结果是多少?[cpp] view plaincopy答:-3可以表示为:符号转载 2013-04-26 16:38:53 · 880 阅读 · 0 评论 -
n个无序整数,已知第i个数在排好序的序列中的位置为j,满足|i-j|<=K,请设计一种排序算法,对该序列进行排序。注:算法时间复杂度为O(nlgn)的得0分,复杂度为O(nk) 的得两分,总分是20分
题目:n个无序整数,已知第i个数在排好序的序列中的位置为j,满足|i-j|的得两分,总分是20分。别人的解析:由以上条件判断最小的数字一定在前k个中,于是可以讲前k个数建立一个最小堆,然后把根元素取出,该根元素就是最小数,然后将第k+1个数放入堆中,因为第二小的数字肯定在下标为1到k+1的位置范围内,所以调整最小堆之后,根元素就是第二小元素,取出该元素,将第k+2个元素放入堆中,。原创 2013-04-28 13:36:59 · 2074 阅读 · 0 评论 -
输入一个正数n,输出所有和为n连续正数序列。
思想:因为是n个连续的序列,因此,设整数n为y,y由i个数组成,初始值为x,则有x+x+1+...+x+(i-1)=y,因此有 x=(2* y - i*(i-1))/(2*i),若x是整数,则可以由以x开始的i个数组成。由于,没有仔细算过n的取值范围,所以暂时去[2,y/2],希望各位给出范围建议。#includeusing namespace std;void continusSeque原创 2013-04-28 21:25:59 · 1417 阅读 · 0 评论 -
树的遍历、深度、平衡树
#include#include#include#includeusing namespace std;#define Len 10templatestruct Tree{ T data; Tree *Left; Tree *Right; public: Tree():Left(0),Right(0){};};void show(const Tree &t);boo原创 2013-05-03 09:49:15 · 1129 阅读 · 0 评论 -
输入一个数n,输出1,2,3,...,9999(n个9)(利用大数求解)
#include#include#include#includeusing namespace std;class bigInt{ public: bigInt(){} bigInt(const bigInt &data):v(data.v) {} bigInt(string s) { int len =s.size(); while(len) {原创 2013-05-05 18:55:43 · 2369 阅读 · 0 评论 -
排序算法(堆排序,归并排序,快速排序、选择排序、直接插入排序)
写了一下午,加一晚上,还没有写希尔排序、基数排序、冒泡排序,由于,这些排序算法在面试中,可能经常会问道,因此,觉得自己动手写写,虽然算法思想清楚,但是仍然会碰到很多处理问题,对堆排序研究了几小时终于写好了,自己写程序粗心了...#include#include#includeusing namespace std;typedef vector HeapType;typedef ve原创 2013-05-06 22:24:18 · 1569 阅读 · 0 评论 -
已知数0到n-1,给定数m,每隔m取出一个数,问,全部取出时的序列
#include#includeusing namespace std;#define IntType vector#define Len 6void show(int );void select(IntType v, int m){ if (m==0) return; int choose=0; int size = v.size(); while(!v.empty())原创 2013-05-27 22:14:00 · 1135 阅读 · 0 评论 -
函数参数的传递问题(指针的指针)
程序1:void myMalloc(char *s) //我想在函数中分配内存,再返回{ s=(char *) malloc(100);}void main(){ char *p=NULL; myMalloc(p); //这里的p实际还是NULL,p的值没有改变,为什么? if(p) free(p);}程序2:void myMalloc(ch转载 2013-06-10 19:32:44 · 681 阅读 · 0 评论 -
class 类名 与inlcude"类名"
class 类名只是声明存在这么一个类,但是通过这个声明无法得到任何关于此类的具体信息。这样你可以在其他使用到的地方声明一个该类型的指针。include头文件则是将整个该头文件与使用到的地方关联起来。使用class 类名一般是为了去除编译依赖,减少编译消耗的时间。#include "xx.h" 在编译的时候把xx.h文件直接展开,所以里面的接口都能用,可以申明对象。但是class xx;这原创 2013-07-04 18:54:04 · 696 阅读 · 0 评论 -
zigzag数组
#includeusing namespace std;class ZigArray{ public: ZigArray(); ZigArray(int); void PrintZigArray(); ~ZigArray(); private : int n; int **z;};ZigArray::ZigArray(int num):n(num){ z = n原创 2013-07-21 20:08:47 · 2209 阅读 · 0 评论 -
螺旋队列问题(由内自外旋转)
21 22.....................20 7 8 9 1019 6 1 2 1118 5 4 3 1217 16 15 14 13#include#includeusing namespace std;class InsideSpin {public: InsideSpin(); int Max(int x,int y);原创 2013-07-22 19:50:17 · 1527 阅读 · 0 评论 -
C#调用C++方法,C#使用c++方法返回类或结构体。
C#调用C++方法,C#使用c++方法返回类或结构体。1. 在c++中定义结构体,类,处理方法;要给c#调用的方法要加extern "C" __declspec(dllexport) 修饰// CppDll.cpp : Defines the exported functions for the DLL application./转载 2015-06-30 10:23:10 · 1214 阅读 · 0 评论