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

来源:互联网 发布:易用进销存软件 编辑:程序博客网 时间:2024/06/05 23:22

<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 2001N200

Output

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

Sample Input
135
Sample Output
138
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: 1233
Submissions: 3495
Time 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
5ACMMACBBAACMBAB
Sample Output
01021
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));}} }}



0 0
原创粉丝点击