`
yaoweinan
  • 浏览: 132736 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

两队比赛,根据口风探比赛表

阅读更多

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Stack;


/**
 * 功能描述:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向
 * 队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单
 * @author Administrator
 *
 */
public class Compare {
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Team teamA=new Team();//A队
  Man a=new Man("a");
  teamA.addTeamMem(a);
  a=new Man("b");
  teamA.addTeamMem(a);
  a=new Man("c");
  teamA.addTeamMem(a);
  Team teamB=new Team();//B队
  a=new Man("x");
  teamB.addTeamMem(a);
  a=new Man("y");
  teamB.addTeamMem(a);
  a=new Man("z");
  teamB.addTeamMem(a);
  //假设两组队员和对方队员全部PK,当然这是不可能的
  for(int i=0;i<teamA.getTeamSize();i++){
   Man man=teamA.getTeamMem(i);
   for(int j=0;j<teamB.getTeamSize();j++){
   man.addMatch(teamB.getTeamMem(j));
   }
  }
  for(int i=0;i<teamB.getTeamSize();i++){
   Man man=teamB.getTeamMem(i);
   for(int j=0;j<teamA.getTeamSize();j++){
   man.addMatch(teamA.getTeamMem(j));
   }
  }
  //根据条件排除A队队员的对手
  for(int i=0;i<teamA.getTeamSize();i++){
   Man man=teamA.getTeamMem(i);
   if(man.getName()!=null&&man.getName().equals("a")){
    Man notMach=man.getMatchByName("x");
    if(notMach!=null){
     notMach.deleteMatch("a");
    }
    man.deleteMatch("x");
   }else if(man.getName()!=null&&man.getName().equals("c")){
    Man notMach=man.getMatchByName("x");
    if(notMach!=null){
     notMach.deleteMatch("c");
    }
    man.deleteMatch("x");
    notMach=man.getMatchByName("z");
    if(notMach!=null){
     notMach.deleteMatch("c");
    }
    man.deleteMatch("z");
   }
  }
  //如果两个队中队员的假设的对手只为一个,那么已经找到对手,并且该对手就是该队员的最终对手
  for(int i=0;i<teamA.getTeamSize();i++){
   Man man=teamA.getTeamMem(i);
   if(man.listMatch().size()==1){
    Man match=man.listMatch().get(0);
    man.setRealMatch(match);match.setRealMatch(man);
    
   }
  }
  for(int i=0;i<teamB.getTeamSize();i++){
   Man man=teamB.getTeamMem(i);
   if(man.listMatch().size()==1){
    Man match=man.listMatch().get(0);
    man.setRealMatch(match);match.setRealMatch(man);
    }
  }
  //如果队员没有找到对手,那么他就去找对方没有找到对手的队员PK
  for(int i=0;i<teamA.getTeamSize();i++){
   Man man=teamA.getTeamMem(i);
   if(man.getRealMatch()==null){
    for(int j=0;j<teamB.getTeamSize();j++){
     Man manp=teamB.getTeamMem(j);
     if(manp.getRealMatch()==null){
      man.setRealMatch(manp);
     }
    }
   }
   
  }
  //查看A队队员的真正对手
  for(int i=0;i<teamA.getTeamSize();i++){
   Man man=teamA.getTeamMem(i);
  System.out.println("A队中"+man.getName()+"队员对B队中"+man.getRealMatch().getName()+"队员");
  }
 }

}
/**
 * 队类
 * @author Administrator
 *
 */
class Team{
 
 private Stack<Man> menbers=new Stack<Man>();//队员列表
 public void addTeamMem(Man man){
  this.menbers.push(man);
 }
 public Man getTeamMem(int index){
  return  this.menbers.elementAt(index);
 }
 public int getTeamSize(){
  return menbers.size();
 }
}
/**
 * 队员类
 * @author Administrator
 *
 */
class Man{
 private String name;//队员名称
 private Map<String, Man> match=null;//待定比赛对手队员范围
 private Man realMatch=null;//最终决定的对手
 public Man getRealMatch() {
  return realMatch;
 }
 public void setRealMatch(Man realMatch) {
  this.realMatch = realMatch;
 }
 public Man(String name) {
  this.name = name;
  this.match = new HashMap<String, Man>();
 }
 public Man getMatchByName(String name){
  if(match!=null&&match.containsKey(name))return match.get(name);else return null;
 }
 public List<Man> listMatch(){
  List<Man> l=new ArrayList<Man>();
  for (Map.Entry<String,Man> m:match.entrySet()){
   l.add(m.getValue());
  }
  return l;
 }
 public void deleteMatch(String name){
  if(match!=null&&match.containsKey(name))match.remove(name);
 }
 public void addMatch(Man man){
  match.put(man.getName(), man);
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 
}

分享到:
评论

相关推荐

    口风与胆识训练.pptx

    口风与胆识训练.pptx

    演奏口风琴曲欢乐颂串词参考.doc

    演奏口风琴曲欢乐颂串词参考.doc

    监管提示购房者“防诱导”贷款中介口风趋紧但仍表示“可操作”.pdf

    监管提示购房者“防诱导”贷款中介口风趋紧但仍表示“可操作”.pdf

    选煤厂两种离心脱水机的对比试验

    在相同入料条件下,对双欣矿业有限公司选煤厂的立式刮刀卸料离心机和卧式振动卸料离心机工艺效果进行了评定,同时对离心液中携带的次生煤泥增量作了简要对比;结果表明,前者脱水产物水分低、脱水率及脱水效率高,但离心...

    RaiseDreams众筹系统asp.net版v2.2.1开源版

    RaiseDreams意为众筹梦想。... 众筹将成互联网金融领域的“弄潮儿” 淘宝众筹“淘星愿”;京东的JD 营销计划和京东众筹;还有百度早就放出口风要推众 筹平台。且不说没有“亲爹”的众筹平台,单就

    RaiseDreams众筹系统(仿摩点) v170411

    还有百度早就放出口风要推众 筹平台。且不说没有“亲爹”的众筹平台,单就BAT大牛们进军众筹这一领域,即可窥视出2015年的众筹在互联网金融领域的饕餮盛宴。没有“亲爹”寻找 “干爹”的创业型众筹网站、互联网大...

    RaiseDreams众筹系统 v1.0 开源版

    还有百度早就放出口风要推众 筹平台。且不说没有“亲爹”的众筹平台,单就BAT大牛们进军众筹这一领域,即可窥视出2015年的众筹在互联网金融领域的饕餮盛宴。没有“亲爹”寻找 “干爹”的创业型众筹网站、互联网大...

    RaiseDreams众筹系统 v1.0 开源版.rar

    还有百度早就放出口风要推众 筹平台。且不说没有“亲爹”的众筹平台,单就BAT大牛们进军众筹这一领域,即可窥视出2015年的众筹在互联网金融领域的饕餮盛宴。没有“亲爹”寻找 “干爹”的创业型众筹网站、互联网大...

    众筹系统(RaiseDreams众筹梦想)v180513.rar

    还有百度早就放出口风要推众筹平台。且不说没有“亲爹”的众筹平台,单就BAT大牛们进军众筹这一领域,即可窥视出2015年的众筹在互联网金融领域的饕餮盛宴。没有“亲爹”寻找“干爹”的创业型众筹网站、互联网大巨头...

    RaiseDreams众筹系统 v16.11.29

    还有百度早就放出口风要推众 筹平台。且不说没有“亲爹”的众筹平台,单就BAT大牛们进军众筹这一领域,即可窥视出2015年的众筹在互联网金融领域的饕餮盛宴。没有“亲爹”寻找 “干爹”的创业型众筹网站、互联网大...

    RaiseDreams众筹系统-.net

    还有百度早就放出口风要推众 筹平台。且不说没有“亲爹”的众筹平台,单就BAT大牛们进军众筹这一领域,即可窥视出2015年的众筹在互联网金融领域的饕餮盛宴。没有“亲爹”寻找 “干爹”的创业型众筹网站、互联网大...

    众筹系统(RaiseDreams众筹梦想)最新官方版

    还有百度早就放出口风要推众筹平台。且不说没有“亲爹”的众筹平台,单就BAT大牛们进军众筹这一领域,即可窥视出2015年的众筹在互联网金融领域的饕餮盛宴。没有“亲爹”寻找“干爹”的创业型众筹网站、互联网大巨头...

    网络相册,直接导入可用

    网络相册,打包,导出的,你直接解压,导入就可以直接使用。这是一个网络相册,用jsp

Global site tag (gtag.js) - Google Analytics