PTA-窮舉法搬運磚塊問題

                                          窮舉法搬運磚塊問題 

這是中國古典算術問題,某工地需要搬運磚塊,已知男人一人搬3塊,女人一人搬2塊,小孩兩人搬1塊。有多少種搬法用N人正好搬N塊磚?

輸入格式:

在一行內輸出正整數N(N<500)

輸出格式:

輸出所有滿足條件的搬法,每種搬法佔一行。

每行按如下格式依次輸出該搬法中男人、女人、小孩的人數(中間用空格間隔,=前後沒有多餘的空格)。

men=男人數 women=女人數 child=小孩數

若沒有滿足條件的搬法,則輸出"No solution!"

輸入樣例1:

45

輸出樣例1:

men=0 women=15 child=30
men=3 women=10 child=32
men=6 women=5 child=34
men=9 women=0 child=36

輸入樣例2:

1

輸出樣例2:

No solution!

 

解答: 

#include<stdio.h>

int main()
{
    int N;
    int i,j,k;
    int flag = 0;
    scanf("%d", &N);
    for(i=0; i<=N/3; i++){
        for(j=0; j<=N/2; j++){
            for(k=0; k<=N; k+=2){
                if((i+j+k == N) && (3*i+2*j+k/2==N)){
                    flag =1;
                    printf("men=%d women=%d child=%d\n", i, j, k);
                }
            }
        }
    }
    if(flag == 0) printf("No solution!\n");
    return 0;
}

------------------------------------------------------------------------------------------------

注:如果只是針對這個問題的話還有更簡單的窮舉法,一個循環就能完成

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章