早教吧 育儿知识 作业答案 考试题库 百科 知识分享

某侦察队接到一项紧急任务,要求在A、B、C、D、E、F六个队员中尽可能多地挑若干人,但有以下限制条件:A和B二人中至少去一人2.A和D不能一起去3.A、E和F三人中要派二人去4.B和C都

题目详情
某侦察队接到一项紧急任务,要求在A、B、C、D、E、F 六个队员中 尽可能多地挑若干人,但有以下限制条件:
A和B二人中至少去一人     2.A和D不能一起去      3.A、E和F三人中要派二人去    4.B和C都去或都不去      5.C和D两人中去一个      6.若D不去,则E也不去    编程,输出选中的人选.  程序:main() {  int a,b,c,d,e,f;  for(a=0;a<=1;a++)  for(b=0;b<=1;b++)  for(c=0;c<=1;c++)  for(d=0;d<=1;d++)  for(e=0;e<=1;e++)  for(f=0;f<=1;f++)  {    if(d==0)e=0;    if(a+b>=1 && a+d!=2 && a+e+f==2 && b==c && c+d==1)    printf("A:%d B:%d C:%d D:%d E:%d F:%d\n",a,b,c,d,e,f);    if(d==0)e=1;  }  } 
我想问一下为什么要在最后的循环加一句 if(d==0)e=1;?
▼优质解答
答案和解析
因为循环体为:

if(d==0)e=0;    
\x09if(a+b>=1 && a+d!=2 && a+e+f==2 && b==c && c+d==1)
\x09\x09printf("A:%d B:%d C:%d D:%d E:%d F:%d\n",a,b,c,d,e,f);
if(d==0)e=1;
如果不用if(d==0)e=1;,当d=0时,会卡死在for(e=0;e<=1;e++)上,跳不出来!
\x09\x09\x09\x09\x09\x09\x09if(d==0)e=0;   
if(d==0)e=1;两句可以使得d=0时,只计算e=0时的情况,应为之后e=1再e++,e>1从而跳过了e=1这个d=0时与e等于0的情况.

来自:唐明Cpp的求助!