您的位置:

c语言搬砖编程,c语言穷举法搬砖

本文目录一览:

C语言:搬砖问题。36块砖,36个人搬,男搬4块,女搬3块,两个小孩搬1块,要求一次搬完,男,女

这是一个循环的问题,设男人女人小孩分别是x y z,x+y+z=36;在算一下取值范围,男人的取值范围是0-9;女人得取值范围是0-12;小孩的取值范围是0-36-x-y;然后分别写三个for循环就可以了

C语言搬砖问题?

男3人,女3人,小孩30人。

代码:

#includestdio.h

int main(){

int man=0,women=0,child=0;

for (man=0;man=9;man++){

for(women=0;women=12;women++){

if((36-man-women)%2==0 (4*man+3*women+(36-man-women)/2)==36)

printf("男%d人,女%d人,小孩%d人\n",man,women,36-man-women);

}

}

return 0;

}

扩展资料:

C语言语法结构

顺序结构:

顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。

例如:a = 3,b = 5,现交换a,b的值,这个问题就好像交换两个杯子里面的水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序为:c = a; a = b; b = c;执行结果是a = 5,b = c = 3。

不过大多数情况下顺序结构都是作为程序的一部分,与其它结构一起构成一个复杂的程序,例如分支结构中的复合语句、循环结构中的循环体等。

选择结构:

顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用选择结构。

选择结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解。程序流程图是根据解题分析所绘制的程序执行流程图。

循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即goto循环、while循环、do while循环和for循环。

一般不提倡用goto循环,因为强制改变程序的顺序经常会给程序的运行带来不可预料的错误。

特别要注意在循环体内应包含趋于结束的语句(即循环变量值的改变),否则就可能成了一个死循环,这是初学者的一个常见错误。

for(表达式1;表达式2;表达式3)循环体语句 。(其中;不能省略)

参考资料来源:百度百科-C语言

C语言编程:100个人搬100块砖,每个男人搬4块,每个女人搬3块,2个小孩抬一块砖。问男人、女人

#includestdio.h

int main()

{

int x,y,z;

for(z=0;z=100;z=z+2)

for(y=0;z+y=100;y++)

{

x=100-y-z;

if(4*x+3*y+z/2==100)

printf("%d,%d,%d\n",x,y,z);

}

}

x y z 分别为男人,女人,小孩个数

c语言编程题。搬运砖块:男人一人搬3块,女人一人搬2块,小孩两人搬1块,问45人搬45块砖,有多少搬法?

#includeiostream

using namespace std;

/*c语言编程题。搬运砖块:男人一人搬3块,女人一人搬2块,小孩两人搬1块,问45人搬45块砖,有多少搬法?

方程组为:3x+2y+z/2=45;x+y+z=45*/

void main()

{

int x,y,z,i=0;

for(x=0;x=15;x++)

for(y=0;y=90-6*x;y++)

for(z=0;z=90-6*x-4*y;z++)

if(6*x+4*y+z==90x+y+z==45)

{

i++;

cout"第"i"种方案为:男人:"x"个,女人:"y"个,小孩:"z"个"endl;

}

if(i==0)

cout"你丫会出题吗你?";

else

cout"这个板砖有"i"拍法。";

system("pause");

}

//经实验通过

搬砖问题(C语言编程)

//穷举法,列举出每一种组合,从中找出符合条件的。

#includestdio.h

void main()

{

int men,women,kids,people,bricks;

for(men=0;men10;men++)

for(women=0;women13;women++)

for(kids=0;kids37;kids=kids+2)

{

people=men+women+kids;

bricks=4*men+3*women+1*(kid/2);

if(people==36bricks==36)

printf("it needs %d men ,%d women and %d kids\r\n",men,women,kids);

}

}

C语言编程(搬砖问题)

算法:4x+3y+z=36x+y+z=36x,y,z属于小于36的正整数由于36个人搬,所以x不会大于9,y不会大于12,z不会大于36所以直到测试完三个条件才算考虑完毕所有情况为了简化思路,将三个条件分开首先固定x,如果x不大于9则开始循环 固定y不断计算z的值,若y值大于13则将x值增加并继续循环 若z大于36则将y值增加并且继续循环,每测试完一组值就记录在一个结构体里面每记录完一个结构体就自增计数器并且将结构体放到最后计算完毕之后返回结构体代码:#include stdio.htypedef struct cdt{ int x,y,z,*num; struct cdt next;}*adt;adt fun(adt link){ adt lk=link; int x,y,z; for(x=1;x!=10;++x){ for(y=1;y!=13;++y){ for(z=1;z!=37;++z){ if((36-4x-3y)=1){ if((z==(36-4x-3y))(z==(36-x-y))){ lk-next =(adt)malloc(sizeof(struct cdt)); lk-x=x,lk-y=y,lk-z=z,*(lk-num)++; lk=lk-next; } } } } } lk-next=null; return link;}int main(void){ adt link=(adt)malloc(sizeof(stuct cdt)); link-num=(int *)malloc(sizeof(int)); *link-num=0; link-next=null; link=fun(link); //自己出来结果。}