您的位置:首页 > 编程语言 > Java开发

百度之星2016 资格赛 java 代码实现

2016-05-14 21:19 661 查看

<span style="font-size:18px;">
</span>
Problem B
Accepts: 1134
Submissions: 4389

Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)

Problem Description

度熊面前有一个全是由1构成的字符串,被称为全1序列。你可以合并任意相邻的两个1,从而形成一个新的序列。对于给定的一个全1序列,请计算根据以上方法,可以构成多少种不同的序列。

Input

这里包括多组测试数据,每组测试数据包含一个正整数NNN,代表全1序列的长度。

1≤N≤2001\leq N \leq 2001≤N≤200

Output

对于每组测试数据,输出一个整数,代表由题目中所给定的全1序列所能形成的新序列的数量。

Sample Input

1
3
5


Sample Output

1
3
8
Hint
如果序列是:(111)。可以构造出如下三个新序列:(111), (21), (12)。import java.io.IOException;
import java.math.BigInteger;
import java.util.Scanner;

public class Main3 {

public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in);

while (scanner.hasNext()) {
int N=scanner.nextInt();
if (N==1) {
System.out.println(1);
}else if (N==2) {
System.out.println(2);
}else {
System.out.println(add(new BigInteger("1"),new BigInteger("2"),N));
}
}
scanner.close();
}
public static BigInteger add(BigInteger a,BigInteger b, int n) {
if (n==3) {
return a.add(b);
}
return add(b,b.add(a),n-1);

}

}

Problem D

Accepts: 1233Submissions: 3495Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/65536 K (Java/Others)Problem Description度熊所居住的 D 国,是一个完全尊重人权的国度。以至于这个国家的所有人命名自己的名字都非常奇怪。一个人的名字由若干个字符组成,同样的,这些字符的全排列的结果中的每一个字符串,也都是这个人的名字。例如,如果一个人名字是 ACM,那么 AMC, CAM, MAC, MCA, 等也都是这个人的名字。在这个国家中,没有两个名字相同的人。度熊想统计这个国家的人口数量,请帮助度熊设计一个程序,用来统计每一个人在之前被统计过多少次。
Input这里包括一组测试数据,第一行包含一个正整数NNN,接下来的NNN 行代表了 NNN 个名字。NNN 不会超过1,000,0041,000,0041,000,004,他们的名字不会超过40位.Output对于每输入的一个人名,输出一个整数,代表这个人之前被统计了多少次。Sample Input
5
ACM
MAC
BBA
ACM
BAB
Sample Output
0
1
0
2
1
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main2 {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);
Map<String, Integer> map=new HashMap(); //String为字符串,Integer为出现的次数

int N = scanner.nextInt();
for (int i = 0; i < N; i++) {
String string = (String) scanner.next();
char[] string_char = string.toCharArray();
Arrays.sort(string_char);// 对输入的字符串数组进行排序
string=String.valueOf(string_char);//排序后的输入字符串

if (!(map.containsKey(string))) {
map.put(string, 0);
System.out.println(0);
} else {
map.put(string, map.get(string)+1);
System.out.println(map.get(string));
}
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息