窮舉法搬運磚塊問題
這是中國古典算術問題,某工地需要搬運磚塊,已知男人一人搬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;
}
------------------------------------------------------------------------------------------------
注:如果只是針對這個問題的話還有更簡單的窮舉法,一個循環就能完成