猜夫妻

猜夫妻:
(1)4对夫妇中,王结婚时,周送礼了;
(2)周和钱是同一个排球队的队员;
(3)李的爱人是陈的爱人的表哥;
(4)陈夫妇与邻居吵架,徐,周,吴的爱人都去助战;
(5)李,徐,周结婚前住一间集体宿舍。
试求(1) 王,周,钱,陈,李,徐,吴,孙8人谁是男的?谁是女的?
        (2)谁和谁是夫妇?

 本次先做第一问,第二问我还在写,等出来后在帖上:

import java.lang.*;
public class GuessCouple1{
 /**数据成员*/
 Person[] sortBySpouse1=new Person[8];
 Person[] sortBySpouse2=new Person[8];
 int x=0;int y=0;
 Person[] sortByEqualSex1=new Person[8];
 Person[] sortByEqualSex2=new Person[8];
    int n=0;int p=0;int b=0;
    Person[] woman=new Person[4];
    Person[] man=new Person[4];
    int k=0;int s=0;int r=0;
    boolean sign=true;
    boolean sign1=true;
    boolean sign2=true;
 
   /**内部类*/
 public class Person{
 
  private String name;
     private boolean sex;
  private Person spouse;
 
     public Person(String name){
      this.name=name;
      this.sex=false;
      this.spouse=null;
     }
  public Person( ){
   name=null;
   sex=false;
   spouse=null;
  }
    
  public Person(String name,boolean sex,Person spouse){
   this.name=name;
   this.sex=sex;
   this.spouse=spouse;
   
  }
  
  public void setName(String name){
   this.name=name;
  }
  
  public String getName( ){
   return name;
  }
 
  public void setSex(boolean sex){
   this.sex=sex;
  }
  public boolean getSex( ){
   return sex;
  }
  public void setSpouse (Person person1){
   this.spouse=person1;
  }
     public Person getSpouse( ){
      return spouse;
     }
 }
 
 /** 方法*/
 public void isCouple(Person person1,Person person2 ){
  if(person1.getSpouse().getName()==person2.getName()) {
     person1.setSex(!person2.getSex());
     person2.setSex(!person1.getSex());
     System.out.println(person1.getName()+"'s sex and "+person2.getName()+"'s sex is not equal" );
  } 
 }
 
 
 public void marriage(Person person1,boolean person1Marriage ,Person person2,boolean person2giveGiftPerson1 ){
  if( person1Marriage&&person2giveGiftPerson1)
  if(!person1.getName().equals(person2.getName()))
      System.out.println(person1.getName()+ " and "+person2.getName()+" are not couple");
         sortBySpouse1[x++]=person1;sortBySpouse2[y++]=person2;
 }       
 
 
 
 public void oneVolleyballGroup(boolean oneGroup,Person person1,Person person2 ){
  if(oneGroup&&person1.getSex()==person2.getSex())
     System.out.println(person1.getName()+" and "+person2.getName()+" is the same sex");
     sortByEqualSex1[n++]=person1;sortByEqualSex1[n++]=person2;b=n;
 } 
 
 
 
 public void liveCollectivityDorm(boolean liveTogether,Person person1,Person person2,Person person3 ){
  if(liveTogether&&!person1.getName().equals(person2.getName( ))&&!person1.getName().equals(person3.getName())&&!person2.getName().equals(person3.getName())){
     System.out.println(person1.getName()+"'s sex and "+person2.getName()+"'s sex is equal "+person3.getName()+"'s sex is equal");
     sortByEqualSex2[p++]=person1;sortByEqualSex2[p++]=person2;sortByEqualSex2[p++]=person3;
    }  
 }  
 
 
 public void isbrotherInLaw(Person person1,Person person2,boolean p1SIsBrotherInLawP2S ){
  if(!person1.getName().equals(person2.getName())&& p1SIsBrotherInLawP2S){
   person1.setSex(false);
   System.out.println(person1.getName()+" is a woman");
   woman[k++]=person1;r=k;
  } 
  System.out.println(person1.getName()+"'s sex is woman and "+person1.getName()+"'s spouse is man");
 } 
 
 
 public void assistInFighting (boolean cCoupleQuarrel,Person cCouple,Person person1,Person person2,Person person3){
  if (cCoupleQuarrel )
    if(!cCouple.getName().equals(person1.getName( ))&&!cCouple.getName().equals(person2.getName( ))&&!cCouple.getName().equals(person3.getName( ))
       &&!person1.getName().equals(person2.getName( ))&&!person1.getName().equals(person3.getName( ))&&!person2.getName().equals(person3.getName( ))){
  
   
       System.out.println(cCouple.getName()+"'s spouse is not "+person1.getName()+" and "+cCouple.getName()+"'s spouse is not "+person1.getName()+" 's spouse");
       System.out.println(cCouple.getName()+"'s spouse is not "+person2.getName()+" and "+cCouple.getName()+"'s spouse is not "+person2.getName()+" 's spouse");
       System.out.println(cCouple.getName()+"'s spouse is not "+person3.getName()+" and "+cCouple.getName()+"'s spouse is not "+person3.getName()+" 's spouse");
   }
      sortBySpouse1[x++]=cCouple;sortBySpouse2[y++]=person1;
   sortBySpouse1[x++]=cCouple;sortBySpouse2[y++]=person2;
   sortBySpouse1[x++]=cCouple;sortBySpouse2[y++]=person3; 
 } 
 
 
  public void guessCoupleByRules( ){
  /**事实数据*/
    Person[] person=new Person[8];
       person[0]=new Person("wang",false,person[0]);
       person[1]=new Person("chen",false,person[1]);
       person[2]=new Person("zhou",false,person[2]);
       person[3]=new Person("qian",false,person[3]);
       person[4]=new Person("wu",false,person[4]);
       person[5]=new Person("sun",false,person[5]);
       person[6]=new Person("li",false,person[6]);
       person[7]=new Person("xu",false,person[7]);
      /** 调用方法*/
       marriage(person[0],true ,person[2],true );
       oneVolleyballGroup(true,person[2],person[3] );
       isbrotherInLaw(person[6],person[1],true );
       assistInFighting (true,person[1],person[7],person[2],person[4]);
       liveCollectivityDorm(true,person[6],person[7],person[2]);
       /**计算*/
       for(int v=0;v<b;v++)
       for(int t=0;t<p;t++){
        if(sortByEqualSex1[v].getName().equals(sortByEqualSex2[t].getName())){
         for(int z=0;z<p;z++){
          for(int j=0;j<b;j++){
           if(!sortByEqualSex2[z].getName().equals(sortByEqualSex1[j].getName())) ;
           else{sortByEqualSex1[j]=sortByEqualSex2[z];sign2=false;}
           }
          if(sign2) sortByEqualSex1[n++]=sortByEqualSex2[z];
          sign2=true;
         }
          }
         }
       for(int m=0;m<r;m++)
       for(int q=0;q<n;q++){
        if(woman[m].getName().equals(sortByEqualSex1[q].getName())) {
            for(int l=0;l<n;l++){
                for(int j=0;j<r;j++){
                    if(!sortByEqualSex1[l].getName().equals(woman[j].getName())) ;
                    else { woman[j]=sortByEqualSex1[l];sign=false;}
                    }  
             if(sign) woman[k++]=sortByEqualSex1[l];
             sign=true;
          }
         }
         }
         r=k;
         if(r==4) {
          System.out.println("These person's sex is partitioning");
          System.out.println("The woman is");
          for(int i=0;i<r;i++)
          System.out.println(woman[i].getName()+"   ");
          for(int j=0;j<8;j++){
              int w=0;
          for(int i=0;i<r;i++){
            if(!person[j].getName().equals(woman[i].getName())) w++;
          } 
           if(w==r) man[s++]=person[j];
          }
         
          System.out.println("The man is");
          for(int i=0;i<s;i++)
          System.out.println(man[i].getName()+"   ");
        } 
      }  
         
     
     public static void main( String[] args){
         GuessCouple1 guessCouple=new GuessCouple1( );
         guessCouple.guessCoupleByRules();
  }
}    
      
      
           
 
 
 
 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值