浏览 1652 次
锁定老帖子 主题:0002组队参赛规则
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-04-12
最后修改:2009-04-12
引用 一个参赛队伍不能超过三人,可以拥有一个替补。包括替补在内任何参赛队员必须为高中毕业五年内,才可以参赛, 也就是说研究生一年级的学生还可以参加。 现在的问题是给你一个队伍,请判断这个队伍是否合法。 输入数据: 输入数据包括若干组,每一组包括有若干行,第一行为一个整数N,为这个队伍的人数,接着有N行,每 一行包括一个字符串(字符串中间没有空格)和一个整数, 字符串表示队员姓名,整数表示这个队员高中毕业的年份(2009表示已经毕业)。 输出数据: 请判断输入的那组数据是否能够成一个合法的赛队,如果合法则输出yes,否则输出no。(现在的年份是2009年) 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-04-12
package util; import java.util.Calendar; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 组队比赛规则 * @author zhanglu */ public class GroupRules { private static final int MEMBERS = 3; private static final int TIME_SPAN = 5; private static String name; private static int graduationTime; public static void main(String agrs[]){ if(isPass()){ System.out.println("yes"); }else{ System.out.println("no"); } } public static boolean isPass(){ int[] array = intputInfo(); if(array == null ) return false; int i = 0; boolean flag = true; Calendar c = Calendar.getInstance(); int currentTime = c.get(Calendar.YEAR); while(i < array.length){ if(currentTime - array[i] > TIME_SPAN){ flag = false; break; } i++; } return flag; } private static int[] intputInfo(){ System.out.println("请输入小组参赛人数:"); Scanner scanner = new Scanner(System.in); String regex = "\\d+"; String ss = scanner.nextLine(); while(!pattern(regex, ss.trim())){ System.out.println("对不起请输入整数"); scanner = new Scanner(System.in); ss = scanner.nextLine(); } int cout = Integer.parseInt(ss.trim()); if(cout > MEMBERS){ return null; } int[] array = new int[cout]; int i = 0; System.out.println("请输入"+cout+"个人信息:"); while(i < cout){ scannerUtil(); array[i] = graduationTime; i++; } return array; } private static void scannerUtil(){ Scanner scanner = new Scanner(System.in); String line = scanner.nextLine(); String[] str = split(line," "); if(str == null) return; String regex = "\\d{4}"; while("".equals(str[1]) || !pattern(regex,str[1])){ System.out.println("请重新输入信息:"); scanner = new Scanner(System.in); line = scanner.nextLine(); str = split(line," "); } name = str[0]; graduationTime = Integer.parseInt(str[1]); } private static String[] split(String line,String splitPattern){ if(line.trim().indexOf(" ")== -1) return null; String regex = "\\s+"; boolean flag = pattern(regex,splitPattern); if(flag){ return line.split(regex); } return null; } private static boolean pattern(String regex,String splitPattern){ if("".equals(splitPattern) || splitPattern == null) return false; Pattern pattern = Pattern.compile(regex); Matcher m = pattern.matcher(splitPattern); return m.matches(); } } |
|
返回顶楼 | |
发表时间:2009-04-12
#include <iostream> #include <string> using namespace std; int currentTime = 2009;//当前时间 int range = 5;//参赛年份范围 struct gameGroup { string name; int graduationTime; }; bool confirmRules(int gamePersonCount,gameGroup *p); void rules() { int gamePersonCount = 0; cout<<"请输入小组参赛人数:"<<endl; cin>>gamePersonCount; if(gamePersonCount > 3) return; gameGroup group[gamePersonCount],*p; p = group; int i = 0; while(i < gamePersonCount) { p = p+i; cin>>p->name>>p->graduationTime; i++; } /*for(int i = 0;i < gamePersonCount;i++) { cin>>group[i].name>>group[i].graduationTime; }*/ bool f = confirmRules(gamePersonCount,p); if(f) cout<<"yes"<<endl; else cout<<"no"<<endl; } bool confirmRules(int gamePersonCount,gameGroup *p) { bool f = true; for(int i = 0;i < gamePersonCount;i++) { p = p+i; int pp = p->graduationTime; if(currentTime - pp > range) { f = false; break; } } return f; } int main() { rules(); system("PAUSE"); return 0; } |
|
返回顶楼 | |