摘要:
水杯题的代码实现:两个水杯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... 阅读全文
摘要:
题目描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列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 阅读全文
摘要:
题目:输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。例如输入: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... 阅读全文
摘要:
题目描述:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入:每个测试案例包括1行。输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。输出:对应每组数据,按字典序输出所有排列。样例输入:abcBCA样例输出:abcacbbacbcacabcbaABCACBBACBCACABCBA这题先把字符串排序,当本次要使用某个字符时,如果它和前面一个字符相同则前面的字符被使用了,它才能使用,这样就避免了重复。另外cout这题要超时,所以用printf,所以递归 阅读全文
摘要:
题目描述:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。输入:每个测试案例包括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:”占一行, 阅读全文
摘要:
题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出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的左半部分都小于根,右半部分都大于根,我们可以根据这条性质来判断。后续遍历的最后一个是根, 阅读全文
摘要:
题目描述:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: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)。输出:对应每个测试案例,输出一行,按照从外向里以顺时针的顺序依次打印出每一个数 阅读全文
摘要:
题目描述:我们可以用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 . 阅读全文
摘要:
题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。输入:输入可能包含多个测试样例,对于每个测试案例,输入包括一个整数n(1<=n<=50)。输出:对应每个测试案例,输出该青蛙跳上一个n级的台阶总共有多少种跳法。样例输入:6样例输出:32又是斐波纳妾的变种 1 #include <iostream> 2 using namespace std; 3 4 int main() 5 { 6 long long f[52]; 7 f[1] = 1; 8 9 for(int i = 2; i <= 50; 阅读全文
摘要:
题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。输入:输入可能包含多个测试样例,对于每个测试案例,输入包括一个整数n(1<=n<=70)。输出:对应每个测试案例,输出该青蛙跳上一个n级的台阶总共有多少种跳法。样例输入:5样例输出:8Fibonacci的变形 1 #include <iostream> 2 using namespace std; 3 4 int main() 5 { 6 long long f[71]; 7 8 f[0] = 1; 9 f[1] = 1;10 11 for(int i... 阅读全文
摘要:
题目描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。斐波那契数列的定义如下:输入:输入可能包含多个测试样例,对于每个测试案例,输入包括一个整数n(1<=n<=70)。输出:对应每个测试案例,输出第n项斐波那契数列的值。样例输入:3样例输出:2 1 #include <iostream> 2 using namespace std; 3 4 int main() 5 { 6 long long f[71]; 7 8 f[0] = 0; 9 f[1] = 1;10 11 for(int i = 2; i <= ... 阅读全文
摘要:
题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并输出它的后序遍历序列。输入:输入可能包含多个测试样例,对于每个测试案例,输入的第一行为一个整数n(1<=n<=1000):代表二叉树的节点个数。输入的第二行包括n个整数(其中每个元素a的范围为(1<=a<=1000)):代表二叉树的前序遍历序列。输入的第三行包括n个整数(其中每个元素a的范围为(1<=a<=1000)):代 阅读全文
摘要:
题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。输入:输入可能包含多个测试样例,对于每个测试案例,输入的第一行为两个整数m和n(1<=m,n<=1000):代表将要输入的矩阵的行数和列数。输入的第二行包括一个整数t(1<=t<=1000000):代表要查找的数字。接下来的m行,每行有n个数,代表题目所给出的m行n列的矩阵(矩阵如题目描述所示,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。输出:对应每个测试案例,输出”Y 阅读全文