时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
现在有一棵合法的二叉树,树的节点都是用数字表示,现在给定这棵树上所有的父子关系,求这棵树的高度
输入
输入的第一行表示节点的个数n(1<=n<=1000,节点的编号为0到n-1)组成,
下面是n-1行,每行有两个整数,第一个数表示父节点的编号,第二个数表示子节点的编号
输出
输出树的高度,为一个整数
样例输入
5
0 1
0 2
1 3
1 4
样例输出
3
Hint
import java.util.Scanner;
public class Main {
public static int n;
public static int left[] = new int[1000];
public static int right[] = new int[1000];
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
n = scanner.nextInt();
for(int i = 0; i < n; i++){
left[i] = -1;
right[i] = -1;
}
scanner.nextLine();
boolean ifChild[] = new boolean[n];
for(int i = 0; i < n - 1; i++) {
String line = scanner.nextLine();
int r = Integer.parseInt(line.split(" ")[0]);
int child = Integer.parseInt(line.split(" ")[1]);
if (left[r] == -1) {
left[r] = child;
} else {
right[r] = child;
}
ifChild[child] = true;
}
int rootNum = 0;
for (int i = 0; i < n; i++){
if(ifChild[i] == false){
rootNum = i;
break;
}
}
System.out.println(height(rootNum));
}
public static int height(int root){
if(root == -1){
return 1;
}
int leftheight = height(left[root]);
int rightheight = height(right[root]);
return leftheight > rightheight ? leftheight : rightheight + 1;
}
}
时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格。
比如:
(1) “hello xiao mi”-> “mi xiao hello”
输入
输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符)
输出
对于每个测试示例,要求输出句子中单词反转后形成的句子
样例输入
hello xiao mi
样例输出
mi xiao hello
1.#include <iostream>
2.#include <string.h>
3.using namespace std;
4.int main()
5.{
6. int n,i,j;
7. char str[100];
8. cin>>n;
9. getchar();
10. while(n--)
11. {
12. gets(str);
13. int len=strlen(str);
14. for(i=0,j=len-1;i<=j;i++,j--)
15. {
16. char temp=str[i];
17. str[i]=str[j];
18. str[j]=temp;
19. }
20. j=0;
21. int k,p;
22. for(i=0;i<=len;i++)
23. {
24. if(str[i]==' '||str[i]=='\0')
25. {
26. for(k=j,p=i-1;k<p;k++,p--)
27. {
28. char temp=str[k];
29. str[k]=str[p];
30. str[p]=temp;
31. }
32. j=i+1;
33. }
34. }
35. for(i=0;i<len;i++)
36. cout<<str[i];
37. cout<<endl;
38. }
39. return 0;
时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
首先将电话号码中的每个数字加上8取个位,然后使用对应的大写字母代替
("ZERO", "ONE", "TWO", "THREE", "FOUR",
"FIVE", "SIX", "SEVEN", "EIGHT", "NINE"),
然后随机打乱这些字母,所生成的字符串即为电话号码对应的分身。
输入
第一行是一个整数T(1<=T<=100)表示测试样例数;接下来T行,每行给定一个分身后的电话号码的分身(长度在3到10000之间)。
输出
输出T行,分别对应输入中每行字符串对应的分身前的最小电话号码(允许前导0)。
样例输入
4
EIGHT
ZEROTWOONE
OHWETENRTEO
OHEWTIEGTHENRTEO
样例输出
0
234
345
0345