第二届2011年国信蓝点杯软件设计大赛预赛的试题

来源:互联网 发布:戒色软件排行 编辑:程序博客网 时间:2024/06/04 18:26
package java_gaozhi_2011;
/*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语句。
另外,源程序中只能出现JDK1.5中允许的语法或调用。不能使用1.6或更高版本。
*/
public class Task_10 {


public static void main(String[] args) {
boolean result = false;
int number = 0;
for(int A=0;A<=1;A++){
for(int B=0;B<=1;B++){
for(int C=0;C<=1;C++){
for(int D=0;D<=1;D++){
for(int E=0;E<=1;E++){
for(int F=0;F<=1;F++){
for(int G=0;G<=1;G++){
for(int H=0;H<=1;H++){
for(int I=0;I<=1;I++){
for(int J=0;J<=1;J++){
/*
  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必须参加*/
if(A==1&&B!=1){
continue;
}
if(C==0&&D!=0){
continue;
}
if(A+C==2){
continue;
}
if(B+D==0||B+D==2){
continue;
}
if(D+E+F+G+H<2){
continue;
}
if(C+G!=0&&C+G!=2){
continue;
}
if(C+E+G+I>2){
continue;
}
if(E==1){
if(F!=1||G!=1)
continue;
}
if(F==1){
if(G==1||H==1)
continue;
}
if((I==0&&J==0)&&H==0){
continue;
}
int[] s = {A,B,C,D,E,F,G,H,I,J};
for(int i=0;i<s.length;i++){
if(s[i]==1){
System.out
.print((char)(i+65)+" ");
}
}
System.out
.println();
}
}
}
}
}
}
}
}
}
}
}


}
0 0