- 博客(104)
- 资源 (3)
- 收藏
- 关注
原创 SQLite实现不同数据库的表内容复制--从一个数据库把表和内容复制到另一个数据库
SQLite实现不同数据表之前内容复制1) 在SQLiteExpert Personal 3中鼠标右键点击目的数据库dist的Attach Database,将原数据库source附加在dist上。2) 执行下面的SQL语句实现表格内容复制(将source数据库的表格table1中内容复制到dist的某一个表格中):l 当dist数据库已经存在table1表格,insert
2014-07-21 16:23:04
8895
转载 C++ Set和multSet
最近发现C++ STL Set 容器是个好东东,所以学习了一下以下博客内容转自:http://blog.sina.com.cn/s/blog_779cf3410101389s.html有些地方自己稍微补充了一下1 set的含义 set是集合,它是一个有序的容器,里面的元素都是排序好的,支持插入,删除,查找等操作,就 像一个集合一样。所有的操作的都是严格在
2013-10-09 12:22:12
1216
原创 hdu 4545 魔法串
思路:假设小西字符串为str1[i] , 小明的字符串为str2[j] 遍历一次str1[i] ,查看对于每一个str1[i] 是否有str2[j] == str1[i] 或者 hash[str2[j]][str1[i]] == 1若都存在则输出happy, 否则输出unhappy.注意:每一个输入后要加一个getchar(); 这点wrong了好几次#include using n
2013-10-08 23:10:32
633
原创 hdu1056 HangOver - 二分查找
思路:先打表,然后再二分查找,此时的二分查找要找到满足条件的最小的一个数代码如下:#include using namespace std;#define N 300double dist[N];void init(){ int i = 0; dist[0] = 0; for (i = 1;i < N; ++i) { dist[i] = dist[i - 1] +
2013-10-08 11:20:37
660
原创 hdu 4544 叛逆的小明 -- 数字反转 和 hdu 2074 叠筐(水题)
水题:数字的反转,123变成321, 复数时前导0去掉 比如-100变成-1#include using namespace std;#define N 10000int Reverse(int inNum){ int sum = 0; if (inNum < 10) { return inNum; } while(inNum%10 == 0) inNum /=
2013-10-07 23:14:18
665
原创 hdu 4544 湫湫系列故事——消灭兔子, 贪心算法+小顶堆
思路:贪心算法1)把所有兔子的血量安从大到小排序,并且把箭的伤害从大到小排序2)排序后,从第一只兔子开始,把每支能杀死该兔子的箭的价格放到一个小顶堆里3)若堆不空,获得小顶堆的堆顶元素,删除之,直到所有兔子都能被射死或者找不到一支射死兔子的箭结束代码如下:#include #include #include #include using namespace st
2013-10-05 19:06:05
811
原创 hdu 4221 Greedy 贪心算法
题意:做任务,每一个任务i都有花费时间ci, 截止时间di, penalty = max(Ti - di) Ti为第i个任务的实际完成时间,di为其截至时间,要求所有任务的penalty尽可能的小一个思路:贪心算法:要求截至日期最小的应该最早完成,因为拖得越晚,penalty越大#include #include using namespace std;#define N 10
2013-10-05 17:08:46
871
原创 hdu 4286 Alice and Bob --贪心
思路:(参考网络上的思路)先对坐标排序,若h不等,则对h升序排序,否则对w进行升序排序排序后之后,扫描Alice的手牌,把所有Bob[j].h等于Alice[i].h的Bob[j].w放入一个集合中,并且在该集合中找到第一个大于Alice[i].w的Bob[x].w那么Bob[x-1].w就是跟Alice[i].w最接近的牌,若存在则删除之。#include #inclu
2013-10-05 11:28:45
781
原创 hdu 3998 Sequence 贪心算法+最长递增子序列+二分查找(好题目)
题意:给定一个数组,求该数组中严格最长递增子序列的长度和相应的最长子序列的个数,在求最长子序列的有多少种时,数组中每一个元素只能使用一次思路:1. 求最长递增子序列的长度时,我们使用二分查找的方法求,具体的操作是维护一个辅助数组,这个辅助数组dp[k]中保存着当前已经获得最长递增子序列,k表示当前的辅助数组中递增序列的个数,当处理原数组中下一个元素data[i]时,1)若data[i] >
2013-10-04 17:29:33
1191
原创 hdu2072 单词数 和 hdu4018 Parsing URL
hdu 2072 单词数#include #include #include using namespace std;#define N 10000char str[N];char word[N];map m_hash;int main(){ int i, n, t; char * p = 0; while(gets(str)) { if (str[0
2013-10-03 19:15:30
636
原创 hdu2057 A + B Again
题意:求2个十六进制数加法的和写了2个版本的代码一个版本按照大数求解#include #include using namespace std;#define N 200char str1[N];char str2[N];int num1[N];int num2[N];int num3[N];int m_hash[256];void init(){ m_
2013-10-02 22:41:35
616
原创 hdu 1880 魔咒词典--字符串简单查找
思路:使用两个二维数组分别存储Key和Value, 当找到Key,时输出Value; 找到Value时输出Key;注意:1)此题使用STL 中map会 Memory Limit Exceeded 2) Key长度不会超过20, Value 长度不会超过 80, 刚开始搞反了,一直出现Output Limit Exceeded#include #inc
2013-10-02 16:36:28
862
原创 hdu 2100 Lovekey 大数加法
思路:26进制的大数相加注意:1) AAAAA * (*表示任意一个字符) 为* 2) AAAA AAAA 只能输出一个A 3) 数组开的大一点,比如说500#include using namespace std;#define N 500char stra[N];char strb[N];char
2013-10-02 13:29:41
758
原创 hdu1501Zipper -- 经典DFS
经典的DFS题意:有3个字符串,问第三个字符串能否有前2个字符串拼接起来,拼接时前2个字符串中字符在新字符串中的先后相对位置不能改变。思路:DFS,前2个字符串,从前向后搜索看能否能拼成第三个字符串的顺序,另外我们需要增加一个辅助数组进行剪枝操作,不然会有重复的搜索的。m_hash[i][j] = 1 表示第一个数组的第i位比较到第2个数组的第j位时已经被搜索过了,以后若遇到m_has
2013-10-01 23:14:02
611
原创 hdu 4148 Length of S(n) --字符串找规律
题目:S(1)=1,S(2)=11,S(3)=21,S(4)=1211,S(5)=111221,S(6)=312211,....求S(n)的长度。思路:题目很简单就是压缩字符串, 比如:s[4] = 1211 那么是s[5]中内容就是1一个1即11, 一个2即12和2个1即21, 合起来s[5]就是11 12 21 同理s[5] = 111221 那么
2013-10-01 20:22:29
857
原创 manacher算法求最长回文串 和 hdu 3068 最长回文串
hdu 3068 最长回文 (manacher算法)1. 回文串定义回文串是一个正读和反读都一样的字符串,比如“aba”或者“abba”等等就是回文串。2. 最长回文子串方法最长回文子串的长度方法可以有三种方法:1) 朴素算法是依次以每一个字符为中心向两侧进行扩展,时间复杂度是O(N^2)的;2) 利用扩展的KMP算法,时间复杂度也很快O(N*logN)。3) mana
2013-10-01 17:38:10
855
原创 hdu 字符串水题 hdu1073Online Judge 和 hdu1200To and Fro hdu1321Reverse Text
hdu1073Online Judge#include using namespace std;#define N 256#define M 5010char source[M];char dist[M];int m_hash[N];int main(){ int i, n, t; char tmpstr[N]; while(scanf("%d",
2013-09-30 21:59:37
957
原创 hdu2594Simpsons’ Hidden Talents--KMP算法
思路:利用KMP算法求出第二个字符串最后一个字符的后缀长度即可。#include using namespace std;#define N 50010char parent[N];char child[N];int Next[N];void getNext(char child[]){ int n = strlen(child); int i = 0,
2013-09-30 21:55:48
523
原创 2014年爱奇艺的校招题目-大题第八题
爱奇艺的一道笔试题目:给定一个数组A中有N个元素,元素范围为1到N,1到N中元素有的没有出现,有的出现多次要求:统计数组A中没有出现的元素和出现多次的元素个数时间复杂度O(n),空间复杂度O(1)思路:对于数组A = {1, 2, 2, 3}A[1] = 1 > 0 时 A[1] == 1 ,A[1] = 1是新出现的数字,并且A[i]=1等于其下标,所以A[1] =
2013-09-28 23:04:21
819
原创 树的子结构遍历
思路:1.在原数中进行遍历每个节点,查看该节点值是否和给定子树节点值相同,若相同则比较比较子结构 1)若子结构相同,则返回 2)若子结构不相同,则继续比较原树中根节点和给定子树根节点值。2.遍历直到整个原树中所有节点都被遍历过,或者找到给定子树的子结构#include using namespace std;int preOrder[] = {10, 6, 4, 8,
2013-09-26 14:12:20
691
原创 颠倒栈中元素--栈的逆置
思路:1.使用递归pop出栈中元素,直到栈中元素只剩下一个元素2.当前第一次递归返回的时候,栈中有2个元素,我们再利用另一个递归函数putItem把两个元素逆置3.以此递归下去,直到栈中元素全部逆置。过程如下1)1 , 2, 3, 4 第一个递归不断出栈,第一次满足返回条件时,栈中元素只有 12)回到第一个递归的上一层,利用putItem把 2 压入栈中,当putItem返
2013-09-26 11:58:51
7056
1
原创 罗马数字转换为十进制数
//例子:罗马数字和十进制例子////I - 1 //II - 2 //III - 3 //IV - 4 //V – 5 //VI - 6 //VII – 7 //VIII - 8 //IX - 9 //X – 10 //XI – 11 //XII – 12 //XIII – 13 //XIV – 14 //XV – 15 //XVI
2013-09-26 11:38:55
1962
原创 寻找数组中的最大值和最小值
//思路来自编程之美上,留个纪念吧//比较次数:1.5N -2//思路:先求左边部分,再求右边部分的最大值和最小值、//#include using namespace std;typedef struct Value_{ int max, min;}Value;Value getMaxMin(int arr[], int left, int right){ if
2013-09-23 18:16:15
682
原创 hdu1198Farm Irrigation -并查集
思路:求无向图的联通分量个数方法:1.对于从A,到K四个正方形,每一条边的中点若有水管则为1,没有水管则为0,按照逆时针方向从上,左,下,右依次排序例如:正方形A可以表示为{1, 1, 0, 0}2. 我们只要判断每一个小正方形的四条边的中点是不是等于其左侧和上侧的正方形的中点,并且同时为1,若相等则归为一类, 此时我们要以给每一个小正方形一个编号 i * n + j 其中(i
2013-09-21 22:34:08
483
原创 hdu2067小兔的棋盘--卡特兰数
#include using namespace std;//大数求解卡特兰数 打表法//公式:C(n + 1) = (4*n - 2)C(n - 1)/(n + 1)#define N 40#define BASE 10int num[N][N];void multi(int a[], int b){ int i = 0, carry = 0; for (i = 1;i
2013-09-20 16:31:46
563
原创 hdu1023Train Problem II --卡特兰数
#include using namespace std;//大数求解卡特兰数 打表法//公式:C(n + 1) = (4*n - 2)C(n - 1)/(n + 1)#define N 110#define BASE 10int num[N][N];void multi(int a[], int b){int i = 0, carry
2013-09-20 16:06:48
581
原创 hdu1130How Many Trees? 卡特兰数
#include using namespace std;//大数求解卡特兰数 打表法//公式:C(n + 1) = (4*n - 2)C(n - 1)/(n + 1)#define N 110#define BASE 10int num[N][N];void multi(int a[], int b){int i = 0, carry =
2013-09-20 11:53:07
621
原创 编程之美-电话号码对应的英文单词
题意:电话号码盘一般可以用于输入字母,如用2可以输入A,B,C用3可以输入D,E,F等。对于电话号码5869782,可以依次输出其代表的所有字母组合,如:JTMWTPA,JTMWTPB,...总共有3 * 3 * 3 *4 * 3* 4 * 3 = 3888种#include #include #include #include using namespace std;
2013-09-19 16:24:52
885
原创 一个整数数组,长度为n,将其分为m份,使得各分的和相等
//题意://一个整数数组,长度为n,将其分为m份,使得各分的和相等//比如:{3,4,2,3,6}可以分成{3,2,4,3,6} m=1;或者 {3,6},{2,4,3} m=2;//{3,3},{2,4}{6} m=3,所以m最大值为3//思路:使用多重背包//首先遍历一次数组arr[n],把数组中最大值maxN和总和sum记录下来//那么可能的等分为m = sum /
2013-09-19 12:55:34
2343
原创 求子数组的最大乘积
题目:给定一个长度为N整形数组,只能用乘法不能用除法,计算任意N-1个数的组合中乘积最大的一组,并写出时间复杂度;#include #include #include using namespace std;#define NSIZ 10000int a[NSIZ];int pre[NSIZ]; //pre[i] = a[0] * a[1] * ..
2013-09-18 22:50:15
566
原创 寻找最近点对-分治法
1. 题意在 n>= 2的点的集合中寻找最近点对,最近点对是指通常意义下的欧几里得距离:即点p1(x1, y1), p2(x2, y2)之间的距离为sqrt((x1 - x2)^2 + (y1- y2)^2),当Q中有2点重合时,最近点对的距离是0;最简单的算法是暴力搜索,查看所有的O(n^2)个点对。现在利用分治法解决,其运行时间是T(n) = 2 T(n/2) + O(n),该算法
2013-09-18 10:50:52
1027
原创 SQLServer判断数据库,表,列名,存储过程是否存在
我们可以使用系统表例如sysobjects,sys.databases等等,还可以OBJECT_ID函数;注意: 使用 OBJECT_ID不能查询非架构范围内的对象(如 DDL触发器)。对于在sys.objects目录视图中找不到的对象,需要通过查询适当的目录视图来获取该对象的标识号。例如,若要返回 DDL 触发器的对象标识号,请使用SELECTOBJECT_ID FROM s
2013-09-17 13:12:32
1024
原创 最大公约数-欧几米德,二进制方法
#include using namespace std;//方法1:欧几米德公式int gcd1(int a, int b){if (b == 0){return a;}return gcd1(b , a % b);}//方法2:若一个整数同时能被a, b整除,那么一定也能够同时能被a-b,b整除//即gcd(a, b) = gcd
2013-09-16 22:10:48
1219
原创 最长递增子序列 - dp
////最长递增子序列 ////////题目描述:设L=是n 个不同的实数的序列,L 的递增子序列是这样一个子序 ////////列 ////////Lin=,其中k1////////求最大的m 值。 #include using namespace std;//思路:动态规划:dp[i] = max(dp[i], dp[j] + 1);
2013-09-16 20:32:44
513
原创 有序数组转为二叉查找树
我们用递归方法遍历有序数组来建立二叉查找树,每次都把[left, right]中间的数看成根节点建树由于二叉查找树的中序遍历是有序的,所以我们用中序遍历二叉查找树时,可以获得数组是有序的,那么确定数组是有序的。#include usingnamespace std; int arr[] = {1, 2, 3, 4, 5, 6}; typedef
2013-09-16 18:40:02
1128
原创 单向链表归并排序
//利用归并排序的思想进行链表排序//因为数组的归并排序,只有判断大小和赋值给一个新的数组//这个很适合链表,并且不用申请新的节点。#include #include using namespace std;#define NSIZ 1000typedef struct Node_{ int m_nvalue;
2013-09-14 22:54:13
648
原创 hdu4287Intelligent IME 字典树
思路:把后面的字符串转换为数字加入到字典树中,然后再重新检索一下原来的数字的个数注意:由于有多个实例,所以每个实例结束后必须清空一下字典树#include#include#includeusingnamespace std;#define NSIZ 5010#define WS 100#define N
2013-09-12 17:00:15
646
原创 1到n中1的个数
读《剑指Offer》有感,记下下面内容以备忘记:#include#include#includeusingnamespace std;#define NSIZ 50010#define WS 100 //nlogn算法int getSumNlgN(int n){int i ,
2013-09-12 11:37:37
489
原创 hdu4099Revenge of Fibonacci 字典树+Fibnocci
//思路://首先利用大数相加暴力求解前100000的Fabnocci数列, 并把每一个数列插入到字典树中//然后对每一个输入在字典树中进行查找,若找到则返回下标最小的数,若没有找到则返回-1//注意:1)大数相加的过程中,由于题目求的是最高位的前40位,但是由于空间性能,我们可以数列精确到前55位即可,否则空间不够用// 精确到50多位是为了防止
2013-09-11 23:21:51
549
原创 hdu2846 Repository 字典树
//思路:使用字典树算法//首先把每个单词按照其后缀子串放入到字典树,比如:abcd,我们应该吧abcd, bcd, cd, d都放入字典树中//这里有个问题:同样一个字符串例如:abab,当查找ab时,就会重复计数,所以我们在建树的过程要多加一个标识符//这个标识符表示该子串是不是重复出现在某一个字符串中,并且该字符串总是表示建树过程中最后一个字符串的编号//如果插入的子串编号同
2013-09-11 18:06:16
510
javaScript高级编程
2013-08-29
VC++动态链接库(DLL)编程
2011-11-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人