随笔分类 -  algorithm

【IT面试题007】英语字符串的分词程序
摘要:/*给你一个没有间隔的字符串“thisisasentence”,如何将他分割成如下的句子:“this is a sentence”。提供一个函数用来检验一个字符串是不是单词:bool dic(char* w);完成下列的函数。要求效率尽可能快。bool Detect(char* str){}尽量写出完整思路,最好有伪代码。提示: 递归,回溯。这里使用最长单词优先匹配 + 深度优先搜索+回溯的方法解决此问题。其中数据来源为一篇普通的英文文字,测试时大概有几千个英文单词,先进行预处理,得到长字符串和单词词典。在实现时,由于使用的是stl的string,接口和题目中给出的有所处理,但不影响解决该问题 阅读全文

posted @ 2011-06-05 21:49 speedmancs 阅读(1070) 评论(0) 推荐(0)

【IT面试题006】迷宫问题
摘要:/*迷宫问题1 表示可以走0 表示不可以走*/#include "stdafx.h"#include <iostream>#include <string>#include <vector>using namespace std;int pathX[1000];int pathY[1000];int curPathPointNum;int gPathCount = 0;int visited[10][10] = {0};int maze[10][10] = {0};int minPathLen = 1000000000;void Init 阅读全文

posted @ 2011-06-04 20:22 speedmancs 阅读(315) 评论(0) 推荐(0)

【IT面试题005】八皇后
摘要:/* 8皇后*/#include "stdafx.h"#include <iostream>#include <string>#include <vector>using namespace std;const int MAX_ELEMENT = 1000;int solution[MAX_ELEMENT];bool columnHasChess[MAX_ELEMENT];bool addDialogHasChess[MAX_ELEMENT]; bool subDialogHasChess[MAX_ELEMENT];int gN; //行 阅读全文

posted @ 2011-06-04 19:25 speedmancs 阅读(230) 评论(0) 推荐(0)

【IT面试题004】全排列
摘要:使用深度优先搜索/*套用深度优先搜索之全排列全排列 输入: n(<=26)输出:将 前n个小写字母全排列输出*/#include "stdafx.h"#include <iostream>#include <string>#include <vector>using namespace std;int gN;const int MAX_ELEMENT = 10000;char solution[MAX_ELEMENT];int selected[26];int gCurNum; int gSolCount;void PrintSol 阅读全文

posted @ 2011-06-04 18:26 speedmancs 阅读(262) 评论(0) 推荐(0)

【IT面试题002】将一个正整数拆成几个连续整数之和
摘要:/*将一个正整数拆成几个连续整数之和代码 sum = a + (a+1) + (a + n - 1) => 2 * sum = n * (2a + n - 1)*//*将一个正整数写成若干个整数之和,打印出所有的可能,每种和输出时,加数升序排列*/#include "stdafx.h"#include <iostream>#include <string>#include <vector>#include <cmath>using namespace std;int _tmain(int argc, _TCHAR* ar 阅读全文

posted @ 2011-06-04 18:07 speedmancs 阅读(684) 评论(0) 推荐(0)

【IT面试题003】将一个正整数写成若干个整数之和
摘要:将一个正整数写成若干个整数之和,打印出所有的可能,每种和输出时,加数升序排列#include <iostream>#include <string>#include <vector>using namespace std;vector<int> solution;int gNum; //目前的加数个数int gCurSum; //当前和int gN; //目标和int gSolCount;void PrintSolution(){ for (int i = 0;i < gNum;i++) { cout << solution[i 阅读全文

posted @ 2011-06-04 17:57 speedmancs 阅读(349) 评论(0) 推荐(0)

面试题收集
摘要:1.单词的反转,比如"I love this game" 反转后为"game this love i" 2.输入任意一个正整数n,输出比它大的最小质数 阅读全文

posted @ 2011-06-04 16:02 speedmancs 阅读(188) 评论(0) 推荐(0)

【面试题001】求出句子中没有出现过的所有字母
摘要:假如一个句子含有所有字母,就叫做pangrams. 比如: "A quick brown fox jumps over the lazy dog" 就是一个pangrams. 要求写一个C++函数, string getMissingLetters(const string& sA)这里sA 代表一个输入的句子。假如sA 不是pangrams, 那么函数应该输出所有sA缺失的字母。 输出的字母应该按字典顺序排列。 btw:字母不区分大小写,最后输出小写字母 #include <iostream>#include <string>using n 阅读全文

posted @ 2011-06-04 15:34 speedmancs 阅读(333) 评论(0) 推荐(0)

搜索二叉树和红黑树的实现
摘要:参考了CLRS(算法导论第二版十二十三章的内容),为了能让红黑树继承搜索二叉树中的大部分方法,我修改了书中红黑树的实现方式,即不再将空节点视为黑色节点,这样一来,红黑树的规则变成了四条。 根节点为黑色 从任一节点,到叶子节点(这里的叶子节点不是空节点)的所有路径中,包含了相同个数的黑节点 任一节点非红即黑 任一节点,若其为红,则其孩子要么都为空,要么都为黑节点。 下面是搜索二叉树的实现//e:\Projects\CLRS\CLRS\BinaryTree.h#ifndef BINARYTREE_H#define BINARYTREE_H#include <fstream>#inclu 阅读全文

posted @ 2010-10-24 16:03 speedmancs 阅读(749) 评论(0) 推荐(0)

约瑟夫问题的递归公式
摘要:1,2....N f(N) = ?1. N = 3k 1,2,4,5..............3k-2 3k-1 剩下 2 * N / 3个。r = f(2k) 则f(N) = ((r-1)/2) * 3 + 2 - r%22. N = 3k + 1, r = f(2k+1) 则 if r = 1 f(N) = 3k+1; else f(N) = ((r-2)/2) * 3 + 2 - (r-1)%23. N = 3k+2,r = f(2k+2) if r = 1 f(N) = 3k+1 else if r = 2 f(N) = 3k+2 else f(N) = ((r-3)/2) * 3 阅读全文

posted @ 2010-10-14 22:17 speedmancs 阅读(1484) 评论(0) 推荐(0)

pku1063 Flip and Shift严格证明
摘要:题目地址 http://acm.pku.edu.cn/JudgeOnline/problem?id=1063 设有m个黑圆,n个白圆,这个题的结论是 1.当 m + n 为奇数时,肯定能操作成功 2.当 m + n 为偶数时,随便取一个黑圆,标号为a1 = 1,然后逆时针给所有黑圆标号, 逆时针第i个黑圆的标号为其位置号,统计黑圆的奇数位置数odds和偶数位置数evens, 若|odds - evens| <= 1,则操作也可以完成。 3.除1,2外,都不能完成操作。 先证明3 比较简单。若|odds - evens| >= 2, 且m + n 为偶数,则flip时,每个圆的位置奇 阅读全文

posted @ 2010-05-05 14:19 speedmancs 阅读(552) 评论(0) 推荐(0)

So Many Skirt
摘要:xiaoA is a beautiful girl, and she has so many skirts that she won't wear a skirt a second time before the skirt is washed. Now xiaoA wants to go shopping, how many skirts she can choose to wear? In order to distinguish these skirts, she gives out every skirt with a unique name. Input The first 阅读全文

posted @ 2010-04-19 19:56 speedmancs 阅读(325) 评论(0) 推荐(0)

一道简单的回溯搜索题
摘要:在一个4*4的小方格(如图所示)中放置8个*号,使得每行每列放且仅放两个*号。┌─┬─┬─┬─┐│*│*│ │ │├─┼─┼─┼─┤│*│ │*│ │├─┼─┼─┼─┤│ │*│ │*│├─┼─┼─┼─┤│ │ │*│*│└─┴─┴─┴─┘求出所有的基本解。#include <iostream>using namespace std;const int N = 4;int selected[N][N];int colCoins[N]; //记录每列当前的硬币数量int gCount = 0;void Print(){ cout << "第" < 阅读全文

posted @ 2010-04-19 16:55 speedmancs 阅读(435) 评论(0) 推荐(0)

导航