论坛首页 编程语言技术论坛

0002组队参赛规则

浏览 1652 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-04-12   最后修改:2009-04-12
C++
引用

一个参赛队伍不能超过三人,可以拥有一个替补。包括替补在内任何参赛队员必须为高中毕业五年内,才可以参赛,
也就是说研究生一年级的学生还可以参加。
现在的问题是给你一个队伍,请判断这个队伍是否合法。
输入数据:
输入数据包括若干组,每一组包括有若干行,第一行为一个整数N,为这个队伍的人数,接着有N行,每
一行包括一个字符串(字符串中间没有空格)和一个整数,
字符串表示队员姓名,整数表示这个队员高中毕业的年份(2009表示已经毕业)。
输出数据:
请判断输入的那组数据是否能够成一个合法的赛队,如果合法则输出yes,否则输出no。(现在的年份是2009年)
   发表时间: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();
	}
}

0 请登录后投票
   发表时间: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;
}
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics