分类计算数目
2017-03-31 09:24
225 查看
假期到了,孩子的同学们来你们家玩,你为他们买了几盒糖果。每个盒子都包含不同类型的糖果的集合。为了防止孩子们因为分到不同数量和类型的糖果而吵闹,你决定打开所有的盒子,取出所有的糖果,并均匀地按孩子个数分成多份。当然,均匀的分配一堆糖果有可能做不到,总会出现零头的,你会把每种类型的糖果均匀的分给孩子们,多余的那些糖果藏起来。
输入:
第一行是一个数字,代表孩子总数。合法值[2,10]
第二行是一个以逗号”,”分隔的字符串,每个字符串被双引号括起来,代表一个糖果盒,字符串中的每个字符代表一个糖果。相等的字符是相同类型的糖果:例如,所有”B”是相同的糖果,所有”L”是相同的糖果,等等。糖果盒数目介于[1,50],每个糖果盒字符串长度限制[1,50],字符合法取值为数字和大小写英文字符,大小写敏感。
字符串输入需严格按照要求,不符合要求的输入或是在合法值以外的参数值,输出打印-1,-1
输出:
打印以”,”分隔的两个数字:第一个是每个孩子分到的糖果数量,第二个是剩下的糖果数量。
如果出错,比如输入值非法,打印-1,-1
Examples
Case 1)
input:
2
"FOO","BAR","BAZ","TOPCODER"
Returns: 5,7
Case 2)
input:
2
"X"
Returns: 0,1
Case 3)
input:
2
"GIVING","CANDY","TO","CHILDREN","CANNOT","BE","CHALLENGING","RIGHT"
Returns: 17,11
Case 4)
input:
2
"WITHOUT","IT","IM","JUST","ESPR"
Returns: 5,9
Case 5)
input:
2
"PHQGHUMEAYLNLFDXFIRCVSCXGGBWKFNQDUXWFNFOZVSRTKJPRE","PGGXRPNRVYSTMWCYSYYCQPEVIKEFFMZNIMKKASVWSRENZKYCXF","XTLSGYPSFADPOOEFXZBCOEJUVPVABOYGPOEYLFPBNPLJVRVIPY","AMYEHWQNQRQPMXUJJLOOVAOWUXWHMSNCBXCOKSFZKVATXDKNLY","JYHFIXJSWNKKUFNUXXZRZBMNMGQOOKETLYHNKOAUGZQRCDDIUT","EIOJWAYYZPVSCMPSAJLFVGUBFAAOVLZYLNTRKDCPWSRTESJWHD","IZCOBZCNFWLQIJTVDWVXHRCBLDVGYLWGBUSBMBORXTLHCSMPXO","HGMGNKEUFDXOTOGBGXPEYANFETCUKEPZSHKLJUGGGEKJDQZJEN","PEVQGXIEPJSRDZJAZUJL"
Returns: 203,14
Case 6)
Input:
2
"PHQGHUMEAYLNLFDXFIRCVSCXGGB,WKFNQDUXWFNFOZVSRTKJPRE"
Returns: -1,-1
源码:
package demo1;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
int fende=0,shengyu=0;
System.out.println("input");
Scanner input1 = new Scanner(System.in);
Scanner input2 = new Scanner(System.in);
int n = input1.nextInt();
String str = input2.next();
String reg = "((\")[A-Za-z0-9]{1,50}(\")(,)?){1,50}";
boolean b = str.matches(reg);
if (b && n<=10 && n>=2) {
Map<Character, Integer>map = new HashMap<Character, Integer>();
for (char s : str.toCharArray()){
Integer i = map.get(s);
if(i == null){
map.put(s, 1);
}else{
map.put(s,i+1);
}
}
for(char key : map.keySet()){
if(key !='"' && key!=','){
fende +=map.get(key)/n;
shengyu +=map.get(key)%n;
}
}
System.out.println("Returns:"+fende+","+shengyu);
} else {
System.out.println("-1,-1");
}
}
}
输入:
第一行是一个数字,代表孩子总数。合法值[2,10]
第二行是一个以逗号”,”分隔的字符串,每个字符串被双引号括起来,代表一个糖果盒,字符串中的每个字符代表一个糖果。相等的字符是相同类型的糖果:例如,所有”B”是相同的糖果,所有”L”是相同的糖果,等等。糖果盒数目介于[1,50],每个糖果盒字符串长度限制[1,50],字符合法取值为数字和大小写英文字符,大小写敏感。
字符串输入需严格按照要求,不符合要求的输入或是在合法值以外的参数值,输出打印-1,-1
输出:
打印以”,”分隔的两个数字:第一个是每个孩子分到的糖果数量,第二个是剩下的糖果数量。
如果出错,比如输入值非法,打印-1,-1
Examples
Case 1)
input:
2
"FOO","BAR","BAZ","TOPCODER"
Returns: 5,7
Case 2)
input:
2
"X"
Returns: 0,1
Case 3)
input:
2
"GIVING","CANDY","TO","CHILDREN","CANNOT","BE","CHALLENGING","RIGHT"
Returns: 17,11
Case 4)
input:
2
"WITHOUT","IT","IM","JUST","ESPR"
Returns: 5,9
Case 5)
input:
2
"PHQGHUMEAYLNLFDXFIRCVSCXGGBWKFNQDUXWFNFOZVSRTKJPRE","PGGXRPNRVYSTMWCYSYYCQPEVIKEFFMZNIMKKASVWSRENZKYCXF","XTLSGYPSFADPOOEFXZBCOEJUVPVABOYGPOEYLFPBNPLJVRVIPY","AMYEHWQNQRQPMXUJJLOOVAOWUXWHMSNCBXCOKSFZKVATXDKNLY","JYHFIXJSWNKKUFNUXXZRZBMNMGQOOKETLYHNKOAUGZQRCDDIUT","EIOJWAYYZPVSCMPSAJLFVGUBFAAOVLZYLNTRKDCPWSRTESJWHD","IZCOBZCNFWLQIJTVDWVXHRCBLDVGYLWGBUSBMBORXTLHCSMPXO","HGMGNKEUFDXOTOGBGXPEYANFETCUKEPZSHKLJUGGGEKJDQZJEN","PEVQGXIEPJSRDZJAZUJL"
Returns: 203,14
Case 6)
Input:
2
"PHQGHUMEAYLNLFDXFIRCVSCXGGB,WKFNQDUXWFNFOZVSRTKJPRE"
Returns: -1,-1
源码:
package demo1;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
int fende=0,shengyu=0;
System.out.println("input");
Scanner input1 = new Scanner(System.in);
Scanner input2 = new Scanner(System.in);
int n = input1.nextInt();
String str = input2.next();
String reg = "((\")[A-Za-z0-9]{1,50}(\")(,)?){1,50}";
boolean b = str.matches(reg);
if (b && n<=10 && n>=2) {
Map<Character, Integer>map = new HashMap<Character, Integer>();
for (char s : str.toCharArray()){
Integer i = map.get(s);
if(i == null){
map.put(s, 1);
}else{
map.put(s,i+1);
}
}
for(char key : map.keySet()){
if(key !='"' && key!=','){
fende +=map.get(key)/n;
shengyu +=map.get(key)%n;
}
}
System.out.println("Returns:"+fende+","+shengyu);
} else {
System.out.println("-1,-1");
}
}
}
相关文章推荐
- C++统计正数数目和负数的数目,并计算平均值
- Fast bit count问题(即计算一个unsigned int的二进制表达中1的数目)
- SQL查询---联接---嵌套---计算---分类汇总---量词---谓词---合并
- 实现文本自动分类的基础--Term频率计算方法
- OpenCV计算连通区域数目与最大连通区域并标示出
- 实现文本自动分类的基础----Term频率计算方法
- 满二叉树各种节点数目的计算
- 一个班级的学生成绩存在长度为10的数组中,计算不及格的学生数目
- 递增子序列数目计算的算法
- IP分类,子网掩码的计算方法──很好的方法
- POJ 1664 求m个苹果放入n个盘子的不同放法数目 递归 分类讨论
- 计算几何题目分类
- 计算二叉树叶子节点的数目
- 20160901云计算定义、层次、分类、特点的简单介绍
- mybatis -- HashMap 用法/实例:查找文章分类下文章的数目
- matlab2010增加并行计算的workers(labs)数目
- 大数据--计算引擎分类
- Excel合并计算和分类汇总
- 使用R进行分类时,ROC的绘制和AUC的计算
- 网段分类及计算