司机是个大坏蛋


私信TA

用户名:413845275

访问量:26746

签 名:

ctf菜鸡

等  级
排  名 189
经  验 4706
参赛次数 1
文章发表 38
年  龄 18
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

解题思路:
记0为不去,1为去,6个for就是全部情况列举,2*2*2*2*2*2,
1)A和B两人中至少去一人; 
2)A和D不能一起去; 
3)A、E和F三人中要派两人去; 
4)B和C都去或都不去; 
5)C和D两人中去一个; 

分别对应:

a+b>=1 && a+d!=2 && a+e+f==2 && b==c && c+d==1

6)若D不去,则E也不去===if(d==0)e=0;if(d==0)e=1;

本来应该只要if(d==0)e=0这个的,但是会发现这样,for会进入死循环,因为 for(e=0; e<=1; e++)

所以要加if(d==0)e=1,这样就能跳出循环

注意事项:





参考代码:

#include<stdio.h>

int 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)

                            {

                                if(a==1) printf("A,");

                                if(b==1) printf("B,");

                                if(c==1) printf("C,");

                                if(d==1) printf("D,");

                                if(e==1) printf("E,");

                                if(f==1) printf("F,");


                            }

                            if(d==0)e=1;

                        }

}


 

0.0分

10 人评分

  评论区

通俗易懂  给你点赞
2020-01-29 18:24:44 | |
#include<stdio.h>

int main()
{
	int a,b,c,d,e,f;
	for(a=0;a<2;a++)
	for(b=0;b<2;b++)
	for(c=0;c<2;c++)
	for(d=0;d<2;d++)
	for(e=0;e<2;e++)
	for(f=0;f<2;f++)
	if((a+b>0) && (a+d<2) && (a+e+f==2) && (b+c==0 || b+c==2) && (c+d==1) && (d+e==0 || d==1)){
		if(a)	printf("A,");
		if(b)	printf("B,");
		if(c)	printf("C,");
		if(d)	printf("D,");
		if(e)	printf("E,");
		if(f)	printf("F,");
		break;
	}
	return 0;
}
我感觉这样看起来整齐很多呀~~当然这是我自己写的哈,跟你的很像耶,嘿嘿
2017-08-15 18:38:52 | |
  • «
  • 1
  • »