上一页 1 2 3 4 5 6 7 8 ··· 18 下一页
摘要: 题目描述:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。输入:每个测试案例包括2行:第一行为2个整数n,k(1<=n,k<=200000),表示数组的长度。第二行包含n个整数,表示这n个数,数组中的数的范围是[0,1000 000 000]。输出:对应每个测试案例,输出最小的k个数,并按从小到大顺序打印。样例输入:8 44 5 1 6 2 7 3 8样例输出:1 2 3 4可以用一个K大小的最大队来做,当堆的个数<K时放入,否则当堆的根大于当前数,弹出堆的根,插入当前数。另外一种就是用partitio 阅读全文
posted @ 2012-11-22 11:37 chkkch 阅读(658) 评论(1) 推荐(0) 编辑
摘要: 题目描述:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。输入:每个测试案例包括2行:第一行输入一个整数n(1<=n<=100000),表示数组中元素的个数。第二行输入n个整数,表示数组中的每个元素,这n个整数的范围是[1,1000000000]。输出:对应每个测试案例,输出出现的次数超过数组长度的一半的数,如果没有输出-1。样例输入:91 2 3 2 2 2 5 4 2样例输出:2这道题可以分两种方法做。方法1:类似于消除原理,既然某个数字 阅读全文
posted @ 2012-11-22 10:58 chkkch 阅读(1426) 评论(0) 推荐(0) 编辑
摘要: 水杯题的代码实现:两个水杯a, b. 倒出c升水 1 #include <iostream> 2 using namespace std; 3 4 int gcd(int a, int b) 5 { 6 if (b == 0) 7 return a; 8 else 9 return gcd(b, a % b);10 }11 12 void solve(int a, int b, int curA, int curB, int c)13 {14 if (curA == c)15 return;16 if (curB... 阅读全文
posted @ 2012-11-21 23:36 chkkch 阅读(420) 评论(0) 推荐(0) 编辑
摘要: 题目描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。输入:每个测试案例包括3行:第一行为1个整数n(1<=n<=100000),表示序列的长度。第二行包含n个整数,表示栈的压入顺序。第三行包含n个整数,表示栈的弹出顺序。输出:对应每个测试案例,如果第二个序列是第一个序列的弹出序列输出Yes,否则输出No。样例输入:51 2 3 4 54 5 3 2 151 2 3 阅读全文
posted @ 2012-11-21 20:23 chkkch 阅读(537) 评论(0) 推荐(1) 编辑
摘要: 题目:输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。例如输入:8/\610/\/\57911输出:8/\106/\/\119 75递归或者栈模拟 1 #include <iostream> 2 #include <stack> 3 using namespace std; 4 5 struct Node 6 { 7 int val; 8 Node *left; 9 Node *right;10 Node():left(NULL), right(NULL){}11 };1... 阅读全文
posted @ 2012-11-21 19:48 chkkch 阅读(330) 评论(0) 推荐(0) 编辑
摘要: 题目描述:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入:每个测试案例包括1行。输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。输出:对应每组数据,按字典序输出所有排列。样例输入:abcBCA样例输出:abcacbbacbcacabcbaABCACBBACBCACABCBA这题先把字符串排序,当本次要使用某个字符时,如果它和前面一个字符相同则前面的字符被使用了,它才能使用,这样就避免了重复。另外cout这题要超时,所以用printf,所以递归 阅读全文
posted @ 2012-11-21 15:02 chkkch 阅读(695) 评论(0) 推荐(0) 编辑
摘要: 题目描述:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。输入:每个测试案例包括n+1行:第一行为2个整数n,k(1<=n<=10000),n表示结点的个数,k表示要求的路径和,结点编号从1到n。接下来有n行。这n行中每行为3个整数vi,leftnode,rightnode,vi表示第i个结点的值,leftnode表示第i个结点的左孩子结点编号,rightnode表示第i个结点的右孩子结点编号,若无结点值为-1。编号为1的结点为根结点。输出:对应每个测试案例,先输出“result:”占一行, 阅读全文
posted @ 2012-11-21 14:49 chkkch 阅读(1112) 评论(0) 推荐(0) 编辑
摘要: 题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。输入:每个测试案例包括2行:第一行为1个整数n(1<=n<=10000),表示数组的长度。第二行包含n个整数,表示这个数组,数组中的数的范围是[0,100000000]。输出:对应每个测试案例,如果输入数组是某二叉搜索树的后序遍历的结果输出Yes,否则输出No。样例输入:75 7 6 9 11 10 847 4 6 5样例输出:YesNo由于BST的左半部分都小于根,右半部分都大于根,我们可以根据这条性质来判断。后续遍历的最后一个是根, 阅读全文
posted @ 2012-11-21 14:12 chkkch 阅读(504) 评论(1) 推荐(0) 编辑
摘要: 题目描述:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵:1 2 3 45 6 7 89 10 11 1213 14 15 16则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.输入:输入可能包含多个测试样例,对于每个测试案例,输入的第一行包括两个整数m和n(1<=m,n<=1000):表示矩阵的维数为m行n列。接下来的m行,每行包括n个整数,表示矩阵的元素,其中每个元素a的取值范围为(1<=a<=10000)。输出:对应每个测试案例,输出一行,按照从外向里以顺时针的顺序依次打印出每一个数 阅读全文
posted @ 2012-11-21 13:53 chkkch 阅读(478) 评论(0) 推荐(0) 编辑
摘要: 题目描述:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?输入:输入可能包含多个测试样例,对于每个测试案例,输入包括一个整数n(1<=n<=70),其中n为偶数。输出:对应每个测试案例,输出用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有的方法数。样例输入:4样例输出:5再次斐波纳妾 1 #include <iostream> 2 using namespace std; 3 4 int main() 5 { 6 long long f[71]; 7 8 f[0] = 1; 9 . 阅读全文
posted @ 2012-11-21 13:39 chkkch 阅读(467) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 18 下一页