天天看點

C語言窮舉法求解:36塊磚,男搬4,女搬3,兩個小孩擡一塊磚,要求一次搬完,問男人、女人和小孩各需多少人?

求解的問題描述:36塊磚,男搬4,女搬3,兩個小孩擡一塊磚,要求一次搬完,問男人、女人和小孩各需多少人?

求解思路:用for循環嵌套3層,定義3個變量:i,j,k,分别代表男,女和小孩。每層循環最大數都是磚的總數即可,最最内層的for循環再用if條件判斷語句實作男搬多少磚+女搬多少磚+小孩搬多少磚=磚的總數。

代碼如下:

代碼方案(一):

#include<stdio.h>

int main()

{

int i,j,k;

for(i=1;i<=36;i++){

    for(j=1;j<=36;j++){

        for(k=1;k<=36;k++){

        if(((4*i+3*j+0.5*k)==36))printf("男的有%d個,女的有%d個,小孩有%d個。\n",i,j,k);

    }

}

}

}

代碼運作結果截圖:

C語言窮舉法求解:36塊磚,男搬4,女搬3,兩個小孩擡一塊磚,要求一次搬完,問男人、女人和小孩各需多少人?

代碼方案(二):

#include<stdio.h>

int main()

{

int i,j,k;

for(i=0;i<35;i++){

    for(j=0;j<35;j++){

        for(k=0;k<35;k++){

        if(((4*i+3*j+0.5*k)==36))printf("男的有%d個,女的有%d個,小孩有%d個。\n",i,j,k);

    }

}

}

}

代碼運作結果截圖:

C語言窮舉法求解:36塊磚,男搬4,女搬3,兩個小孩擡一塊磚,要求一次搬完,問男人、女人和小孩各需多少人?

完善代碼(主要是統計出總的搬磚方案個數,即加入統計方案個數功能):

#include<stdio.h>

int main()

{

int i,j,k;

int b=0;

for(i=1;i<=36;i++){

    for(j=1;j<=36;j++){

        for(k=1;k<=36;k++){      

        if(((4*i+3*j+0.5*k)==36)){

        printf("男的搬磚的有%d個,女的搬磚的有%d個,小孩子搬磚的有%d個。\n",i,j,k);

        b=b+1;    

    }    

    }  

}

}

          printf("以上搬磚方案共有:%d種\n",b);

}

完善後的代碼運作結果截圖:

C語言窮舉法求解:36塊磚,男搬4,女搬3,兩個小孩擡一塊磚,要求一次搬完,問男人、女人和小孩各需多少人?

繼續閱讀