随笔分类 -  C++/VC++

上一页 1 ··· 3 4 5 6 7 8 9 10 11 12 下一页
九格游戏最少移动步数算法实现
摘要:给九个格子1,2,...9 一共9个数组,每次只能交换9与他直接相邻的数字,计算从一种状态到另外一种状态的最少移动步数。用广搜+康拓展开的方法实现。#include "stdafx.h" #include<iostream> #include<string> #include <vector> #include <math.h>#include <map>#include <queue>using namespace std;const int MAX=400000;long int fac[]={1, 阅读全文
posted @ 2012-08-29 11:20 知识天地 阅读(1002) 评论(0) 推荐(0) 编辑
康拓展开及应用
摘要:题目:给出n个互不相同的字符, 并给定它们的相对大小顺序,这样n个字符的所有排列也会有一个顺序.现在任给一个排列,求出在它后面的第i个排列.这是一个典型的康拓展开应用,首先我们先阐述一下什么是康拓展开。(1)康拓展开 所谓康拓展开是指把一个整数X展开成如下形式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[2]*1!+a[1]*0!。(其中,a为整数,并且0<=a[i]<i(1<=i<=n))(2)应用实例 {1,2,3,4,...,n}表示1,2,3,...,n的排列如 {1,2,3} 按从小到大排列一共6个:1 阅读全文
posted @ 2012-08-28 18:06 知识天地 阅读(285) 评论(0) 推荐(0) 编辑
【转】人民搜索面经
摘要:发信人: YouTube (YouTube - Broadcast Yourself), 信区: Job标题: 人民搜索面试回忆发信站: 北邮人论坛 (Sat Oct 22 23:18:31 2011), 站内所投职位:搜索研发工程师结果:拒信1封一、面试形式 1、3轮1V1的技术面试;某轮面试通过,稍事休息后开始下一轮面试。 2、面试过程基本分为两部分: 1)对简历上所写项目的描述,及回答对方感兴趣的项目细节; 2)对方给出数组、链表等常见程序设计问题,要求描述解决问题的思路;并把思路转化为代码(手写)。 这一部分是最重要的环节,占面试总时间的85%以上。二、面试题回忆 1、删除字符串开始及 阅读全文
posted @ 2012-08-27 22:55 知识天地 阅读(563) 评论(0) 推荐(0) 编辑
在两个有序的数组中找第N个数,二分查找 O(lgm+lgn)级
摘要:在两个有序的数组中找第N个数,O(lgm+lgn)级分类:算法2009-10-09 20:52981人阅读评论(3)收藏举报问题描述:Give a divide and conquer algorithm for the following problem:you are given two sorted lists of size m and n, and are allowedunit time access to the ith element of each list. Give an O(lg m + lgn)time algorithm for computing the kth 阅读全文
posted @ 2012-08-27 08:28 知识天地 阅读(2698) 评论(0) 推荐(0) 编辑
编程之美——小飞的电梯调度算法之新解(中位数)
摘要:亚洲微软研究院所在的希格玛大厦一共有6部电梯。在高峰时间,每层都有人上下,电梯每层都停。实习生小飞常常会被每层都停的电梯弄的很不耐烦,于是他提出了这样一个办法:由于楼层并不算太高,那么在繁忙的上下班时间,每次电梯从一层往上走时,我们只允许电梯停在其中的某一层。所有乘客从一楼上电梯,到达某层后,电梯停下来,所有乘客再从这里爬楼梯到自己的目的层。在一楼的时候,每个乘客选择自己的目的层,电梯则计算出应停的楼层。问:电梯停在哪一层楼,能够保证这次乘坐电梯的所有乘客爬楼梯的层数之和最少?解法一:暴力枚举法。从第1层枚举到第N层,求出电梯在x层停的话,所有乘客需要怕多少层楼。求出最少的那层即可。代码略。解 阅读全文
posted @ 2012-08-26 14:12 知识天地 阅读(1112) 评论(0) 推荐(0) 编辑
有n 个长为m+1 的字符串,求前后m个字符匹配所能形成的最长字符串链:利用弗洛伊德算法求最长路径
摘要:有n 个长为m+1 的字符串,如果某个字符串的最后m 个字符与某个字符串的前m 个字符匹配,则两个字符串可以联接,问这n 个字符串最多可以连成一个多长的字符串,如果出现循环,则返回错误。把字符串看成图中的一个顶点,两字符串匹配则两个顶点间有边,从而转化为图的问题。利用弗洛伊德算法求图的最长路径。[cpp]view plaincopy#include<iostream>#include<string>usingnamespacestd;#defineINFINITY-10000#defineMAX_VERTEX_NUM20typedefstructMGraph{strin 阅读全文
posted @ 2012-08-23 11:15 知识天地 阅读(788) 评论(0) 推荐(0) 编辑
网易有道笔试:求连通图的割点(关节点)
摘要:题目:求一个连通图的割点,割点的定义是,如果除去此节点和与其相关的边,图不再连通,描述算法。分析:1. 最简单也是最直接的算法是,删除一个点然后判断连通性,如果删除此点,图不再连通,则此点是割点,反之不是割点(图的连通性一般通过深搜来判定,是否能一次搜索完 全部顶点);2. 通过深搜优先生成树来判定。从任一点出发深度优先遍历得到优先生成树,对于树中任一顶点V而言,其孩子节点为邻接点。由深度优先生成树可得出两类割点的特性: (1)若生成树的根有两棵或两棵以上的子树,则此根顶点必为割点。因为图中不存在连接不同子树顶点的边,若删除此节点,则树便成为森林; (2)若生成树中某个非叶子顶点V,其某棵子树 阅读全文
posted @ 2012-08-23 11:12 知识天地 阅读(6354) 评论(0) 推荐(0) 编辑
大量url,如何去重
摘要:问题:有大量的字符串格式的URL,如何从中去除重复的,优化时间空间复杂度1. 内存够用,将URL存入hash链表,每个URL读入到hash链表中,遇到重复的就舍弃,否则加入到链表里面,最后遍历得到所有不重复的URL。空间复杂度M,时间复杂度为O(N+N/M),M为不重复的URL,N为总URL数,但是M无法预测,所以存在风险,可能内存不足以存储所有的不重复URL。2. 为了解决内存可能不足的问题,需要把hash链表变化成普通的hash表,每个hash表元素指向一个文件文件,这个文件记录了所有该hash值对应的无重复的URL,那么在加入URL的时候就遍历对应文件中的URL,没有重复则加入到文件中。 阅读全文
posted @ 2012-08-23 11:00 知识天地 阅读(5489) 评论(1) 推荐(0) 编辑
回文字符串(动态规划解法)
摘要:回文字符串时间限制:3000ms | 内存限制:65535KB难度:4描述所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba"。当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串。现在要求你,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。输入第一行给出整数N(0<N<100)接下来的N行,每行一个字符串,每个字符串长度不超过1000.输出每行输出所需添加的最少字符数样例输入1Ab3bd样例输出2一道动态规划题,辅助空间cost[i][j]表示要将从s[j]个字符开始长度为i的子 阅读全文
posted @ 2012-08-21 07:33 知识天地 阅读(1273) 评论(0) 推荐(0) 编辑
学习C++STL
摘要:尽管很多程序员仍然在使用标准C函数,但是这就好像骑着毛驴寻找Mercedes一样。你当然最终也会到达目标,但是你浪费了很多时间。尽管有时候使用标准C函数确实方便(如使用sprintf()进行格式化输出)。但是C函数不使用异常机制来报告错误,也不适合处理新的数据类型。而且标准C函数经常使用内存分配技术,没有经验的程序员很容易写出bug来。.C++标准库则提供了更为安全,更为灵活的数据集处理方式。STL最初由HP实验室的Alexander Stepanov和Meng Lee开发。最近,C++标准委员会采纳了STL,尽管在不同的实现之间仍有细节差别。STL的最主要的两个特点:数据结构和算法的分离.. 阅读全文
posted @ 2012-08-19 08:58 知识天地 阅读(405) 评论(0) 推荐(0) 编辑
微软面试100题2010年版全部答案集锦(转自July)
摘要:作者:July、阿财。时间:二零一一年十月十三日。引言 无私分享造就开源的辉煌。 今是二零一一年十月十三日,明日14日即是本人刚好开博一周年。在一周年之际,特此分享出微软面试全部100题答案的完整版,以作为对本博客所有读者的回馈。 一年之前的10月14日,一个名叫July (头像为手冢国光)的人在一个叫csdn的论坛上开帖分享微软等公司数据结构+算法面试100题,自此,与上千网友一起做,一起思考,一起解答这些面试题目,最终成就了一个名为:结构之法算法之道的编程面试与算法研究并重的博客,如今,此博客影响力逐步渗透到海外,及至到整个互联网。 在此之前,由于本人笨拙,这微软面试100题的答案只整理到 阅读全文
posted @ 2012-08-17 15:44 知识天地 阅读(2764) 评论(0) 推荐(0) 编辑
微软、Google等面试题博客地址收藏
摘要:http://zhedahht.blog.163.com/blog/#m=0 阅读全文
posted @ 2012-08-17 14:53 知识天地 阅读(252) 评论(0) 推荐(0) 编辑
两种方法实现KMP算法(必懂KMP)
摘要:六之再续:KMP算法之总结篇(必懂KMP)作者:July。出处:http://blog.csdn.net/v_JULY_v/。转自牛人的文章,第一种方法不够直观,很难理解。第二种自我覆盖程度求Next,非常简单明了,学习KMP非常好的教程。留着以后经常回顾。引记 此前一天,一位MS的朋友邀我一起去与他讨论快速排序,红黑树,字典树,B树、后缀树,包括KMP算法,唯独在讲解KMP算法的时候,言语磕磕碰碰,我想,原因有二:1、博客内的东西不常回顾,忘了不少;2、便是我对KMP算法的理解还不够彻底,自不用说讲解自如,运用自如了。所以,特再写本篇文章。由于此前,个人已经写过关于KMP算法的两篇文章,所以 阅读全文
posted @ 2012-08-15 10:04 知识天地 阅读(12083) 评论(2) 推荐(0) 编辑
c语言字符串处理函数
摘要:很高效的字符串处理函数:void *memccpy (void *dest, const void *src, int c, size_t n);从src所指向的对象复制n个字符到dest所指向的对象中。如果复制过程中遇到了字符c则停止复制,返回指针指向dest中字符c的下一个位置;否则返回NULL。void *memcpy (void *dest, const void *src, size_t n);从src所指向的对象复制n个字符到dest所指向的对象中。返回指针为dest的值。void *memchr (const void *s, int c, size_t n);在s所指向的对象的 阅读全文
posted @ 2012-08-14 18:34 知识天地 阅读(301) 评论(0) 推荐(0) 编辑
构造数独 算法及代码实现
摘要:子标题: 编程之美1.15——构造数独转载信息:http://blog.csdn.net/linyunzju/article/details/7673959问题:构造一个9*9的方格矩阵,玩家要在每个方格中,分别填上1至9的任意一个数字,让整个棋盘每一列、每一行以及每一个3*3的小矩阵中的数字都不重复。首先我们通过一个深度优先搜索来生成一个可行解,然后随机删除一定数量的数字,以生成一个数独。#include<iostream> #include<cstdlib> usingnamespace std; #define LEN 9 #define CLEAR(a) mem 阅读全文
posted @ 2012-08-11 16:17 知识天地 阅读(698) 评论(0) 推荐(0) 编辑
C++ STL--stack/queue 的使用方法
摘要:1、stackstack 模板类的定义在<stack>头文件中。stack 模板类需要两个模板参数,一个是元素类型,一个容器类型,但只有元素类型是必要的,在不指定容器类型时,默认的容器类型为deque。定义stack 对象的示例代码如下:stack<int> s1;stack<string> s2;stack 的基本操作有:入栈,如例:s.push(x);出栈,如例:s.pop();注意,出栈操作只是删除栈顶元素,并不返回该元素。访问栈顶,如例:s.top()判断栈空,如例:s.empty(),当栈空时,返回true。访问栈中的元素个数,如例:s.size( 阅读全文
posted @ 2012-08-09 11:44 知识天地 阅读(82940) 评论(0) 推荐(4) 编辑
判断两矩形是否相交
摘要:1 //判断矩形是否相交 2 bool FMath::IsRectIntersect(const FRect& rect1, const FRect& rect2) 3 { 4 bool bResult = true; 5 6 double dWidthRectA; 7 double dHeightRectA; 8 9 double dWidthRectB;10 double dHeightRectB;11 12 //方便计算,中心点坐标为实际坐标的2倍13 CPoint centerRectA;14 CPoint cent... 阅读全文
posted @ 2012-06-19 15:32 知识天地 阅读(499) 评论(0) 推荐(0) 编辑
vc++ 6.0对话框上无法显示中文(乱码)
摘要:是英文版的vc++,建立mfc向导时无法选择中文,到对话框里面改成中文还是乱码,怎么版啊问题补充:一般对话框是可以的,就是那个CPropertyPage不可以满意回答对话框资源选成中文以后要ReBuild一下,才会生效 阅读全文
posted @ 2012-05-17 18:29 知识天地 阅读(1107) 评论(0) 推荐(0) 编辑
VC++中轻松实现滑动(Slider)控件
摘要:滑动控件是Windows中最常用的控件之一。一般而言它是由一个滑动条,一个滑块和可选的刻度组成,用户可以通过移动滑块在相应的控件中显示对应的值。通常,在滑动控件附近一定有标签控件或编辑框控件,用于显示相应的值。滑动控件在应用程序中用途级为广泛,如在桌面的属性中就可以看到。为此,让我们一起来看一下它的实现方法。 (1)在VC++ 6.0中新建一个对话框文档的工程。 (2)打开资源管理器,在对话框中放置一个EDIT控件,然后在它旁边放上一个Slider控件。基本的框架已经完成了。 (3)对Slider控件右击,选择“建立类向导”,对刚才的Slider控件定义一个变量m_Slider,类型为C... 阅读全文
posted @ 2012-05-17 16:19 知识天地 阅读(1235) 评论(0) 推荐(0) 编辑
c++ 观察者模式
摘要:[代码]c++观察者模式简易示例view sourceprint?01#include <iostream>02#include <string>03#include <vector>04#include <algorithm>05usingnamespacestd;0607classbutton;0809structbutton_listener{10button_listener(){}11virtual~button_listener(){}12virtualvoidbutton_clicked(button* btn)=0;13};141 阅读全文
posted @ 2012-04-22 16:12 知识天地 阅读(434) 评论(0) 推荐(0) 编辑

上一页 1 ··· 3 4 5 6 7 8 9 10 11 12 下一页