package s5;
public class test10 {
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
* A、B、C、D、E、F、G、H、I、J 共10名学生有可能参加本次计算机竞赛,也可能不参加。因为某种原因,他们是否参赛受到下列条件的约束:
* 1. 如果A参加,B也参加; 2. 如果C不参加,D也不参加; 3. A和C中只能有一个人参加; 4. B和D中有且仅有一个人参加; 5.
* D、E、F、G、H 中至少有2人参加; 6. C和G或者都参加,或者都不参加; 7. C、E、G、I中至多只能2人参加 8.
* 如果E参加,那么F和G也都参加。 9. 如果F参加,G、H就不能参加 10. 如果I、J都不参加,H必须参加
* 请编程根据这些条件判断这10名同学中参赛者名单。如果有多种可能,则输出所有的可能情况。
* 每种情况占一行。参赛同学按字母升序排列,用空格分隔。
* 比如: C D G J 就是一种可能的情况。
* 要求考生把所有类写在一个文件中。调试好后,存入与考生文件夹下对应题号文件夹中的“解答.txt”
* 中即可。相关的工程文件不要拷入。请不要使用package语句。
*/
for(int a=0;a<2;a++)
for(int b=0;b<2;b++)
if((a==1&&b==1)||(a==0&&b==1)||(a==0&&b==0))//如果A参加,B也参加;
for(int c=0;c<2;c++)
if(a+c<=1)// A和C中只能有一个人参加;
for(int d=0;d<2;d++)
if((c==0&&d==0)||(c==1&&d==1)||(c==1&&d==0))// 如果C不参加,D也不参加;
if(b+d==1)//B和D中有且仅有一个人参加;
for(int e=0;e<2;e++)
for(int f=0;f<2;f++)
for(int g=0;g<2;g++)
if(c+g==2||c+g==0)//C和G或者都参加,或者都不参加;
if(e+f+g==3||(e==0&&f==0&&g==0)||(e==0&&f==0&&g==1)||(e==0&&f==1&&g==0)||(e==0&&f==1&&g==1))//如果E参加,那么F和G也都参加。
for(int h=0;h<2;h++)
if(d+e+f+g+h>=2)// D、E、F、G、H 中至少有2人参加;
if((f==1&&g==0&&h==0)||(f==0&&g==0&&h==0)||(f==0&&g==0&&h==1)||(f==0&&g==1&&h==0)||(f==0&&g==1&&h==1))//如果F参加,G、H就不能参加
for(int i=0;i<2;i++)
if(c+e+g+i<=2)//C、E、G、I中至多只能2人参加
for(int j=0;j<2;j++)
if((i==0&&j==0&&h==1)||(i==1&&j==0&&h==0)||(i==1&&j==0&&h==1)||(i==1&&j==1&&h==0)||(i==1&&j==1&&h==1)||(i==0&&j==1&&h==0)||(i==0&&j==1&&h==1)){//如果I、J都不参加,H必须参加
//String s="";
if(a==1){
System.out.print('A');
}
if(b==1){
System.out.print('B');
}
if(c==1){
System.out.print('C');
}
if(d==1){
System.out.print('D');
}
if(e==1){
System.out.print('E');
}
if(f==1){
System.out.print('F');
}
if(g==1){
System.out.print('G');
}
if(h==1){
System.out.print('H');
}
if(i==1){
System.out.print('I');
}
if(j==1){
System.out.print('J');
}
System.out.println();
}
}
}
public class test10 {
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
* A、B、C、D、E、F、G、H、I、J 共10名学生有可能参加本次计算机竞赛,也可能不参加。因为某种原因,他们是否参赛受到下列条件的约束:
* 1. 如果A参加,B也参加; 2. 如果C不参加,D也不参加; 3. A和C中只能有一个人参加; 4. B和D中有且仅有一个人参加; 5.
* D、E、F、G、H 中至少有2人参加; 6. C和G或者都参加,或者都不参加; 7. C、E、G、I中至多只能2人参加 8.
* 如果E参加,那么F和G也都参加。 9. 如果F参加,G、H就不能参加 10. 如果I、J都不参加,H必须参加
* 请编程根据这些条件判断这10名同学中参赛者名单。如果有多种可能,则输出所有的可能情况。
* 每种情况占一行。参赛同学按字母升序排列,用空格分隔。
* 比如: C D G J 就是一种可能的情况。
* 要求考生把所有类写在一个文件中。调试好后,存入与考生文件夹下对应题号文件夹中的“解答.txt”
* 中即可。相关的工程文件不要拷入。请不要使用package语句。
*/
for(int a=0;a<2;a++)
for(int b=0;b<2;b++)
if((a==1&&b==1)||(a==0&&b==1)||(a==0&&b==0))//如果A参加,B也参加;
for(int c=0;c<2;c++)
if(a+c<=1)// A和C中只能有一个人参加;
for(int d=0;d<2;d++)
if((c==0&&d==0)||(c==1&&d==1)||(c==1&&d==0))// 如果C不参加,D也不参加;
if(b+d==1)//B和D中有且仅有一个人参加;
for(int e=0;e<2;e++)
for(int f=0;f<2;f++)
for(int g=0;g<2;g++)
if(c+g==2||c+g==0)//C和G或者都参加,或者都不参加;
if(e+f+g==3||(e==0&&f==0&&g==0)||(e==0&&f==0&&g==1)||(e==0&&f==1&&g==0)||(e==0&&f==1&&g==1))//如果E参加,那么F和G也都参加。
for(int h=0;h<2;h++)
if(d+e+f+g+h>=2)// D、E、F、G、H 中至少有2人参加;
if((f==1&&g==0&&h==0)||(f==0&&g==0&&h==0)||(f==0&&g==0&&h==1)||(f==0&&g==1&&h==0)||(f==0&&g==1&&h==1))//如果F参加,G、H就不能参加
for(int i=0;i<2;i++)
if(c+e+g+i<=2)//C、E、G、I中至多只能2人参加
for(int j=0;j<2;j++)
if((i==0&&j==0&&h==1)||(i==1&&j==0&&h==0)||(i==1&&j==0&&h==1)||(i==1&&j==1&&h==0)||(i==1&&j==1&&h==1)||(i==0&&j==1&&h==0)||(i==0&&j==1&&h==1)){//如果I、J都不参加,H必须参加
//String s="";
if(a==1){
System.out.print('A');
}
if(b==1){
System.out.print('B');
}
if(c==1){
System.out.print('C');
}
if(d==1){
System.out.print('D');
}
if(e==1){
System.out.print('E');
}
if(f==1){
System.out.print('F');
}
if(g==1){
System.out.print('G');
}
if(h==1){
System.out.print('H');
}
if(i==1){
System.out.print('I');
}
if(j==1){
System.out.print('J');
}
System.out.println();
}
}
}