問題:
用天平稱重時,我們希望用盡可能少的砝碼組合稱出盡可能多的重量。
如果只有5個砝碼,重量分別是1,3,9,27,81。則它們可以組合稱出1到121之間任意整數重量(砝碼允許放在左右兩個盤中)。
本題目要求程式設計實現:對使用者給定的重量,給出砝碼組合方案。
例如:使用者輸入:
程式輸出:
9-3-1
使用者輸入:
程式輸出:
27-9+1
要求程式輸出的組合總是大數在前小數在後。
可以假設使用者的輸入的數字符合範圍1~121。
思路:對於每個xi,可以乘以乙個係數ki,再求和。
ki的數值無外乎:-1 0 1
這樣,因為標準砝碼的數量的很少的,我們就可以多層迴圈暴力組合ki來求解。
**(比較狗):
#include #include int main()
; int k1[3]= ;//為每個砝碼設乙個0,-1,1的陣列,以便結合
int k2[3]= ;
int k3[3]= ;
int k4[3]= ;
int k5[3]= ;
int jie[6];
int n,i,j1,j2,j3,j4,j5,sum,judge=1;
scanf("%d",&n);
for(j1=0; j1<=3; j1++)//五個0,1,-1,進行窮舉}}
return 0;
}
執行結果:
小結:這個題思路還有很多,例如貪心,回朔,以及根據砝碼重量為3的倍數來求解等。
糾正乙個錯誤,上面的程式只能輸出減號,如果兩個數相加則不會顯示加號,所以現改正如下:
#include #include int main()
; int k1[3]= ;//為每個砝碼設乙個0,-1,1的陣列,以便結合
int k2[3]= ;
int k3[3]= ;
int k4[3]= ;
int k5[3]= ;
int jie[6];
int n,i,j1,j2,j3,j4,j5,sum,judge=1;
int a=0;
scanf("%d",&n);
for(j1=0; j1<=3; j1++)//五個0,1,-1,進行窮舉
else
printf("+%d",jie[i]);}}
}}judge=0;
break;}}
}return 0;
}
數學 天平稱重
用天平稱重時,我們希望用盡可能少的砝碼組合稱出盡可能多的重量。如果只有5個砝碼,重量分別是1,3,9,27,81 則它們可以組合稱出1到121之間任意整數重量 砝碼允許放在左右兩個盤中 本題目要求程式設計實現 對使用者給定的重量,給出砝碼組合方案。例如 使用者輸入 5程式輸出 9 3 1 使用者輸入...
天平稱重時
用天平稱重時,我們希望用盡可能少的砝碼組合稱出盡可能多的重量。如果只有5個砝碼,重量分別是1,3,9,27,81 則它們可以組合稱出1到121之間任意整數重量 砝碼允許放在左右兩個盤中 本題目要求程式設計實現 對使用者給定的重量,給出砝碼組合方案。例如 使用者輸入 5程式輸出 9 3 1 使用者輸入...
藍橋杯 天平稱重
用天平稱重時,我們希望用盡可能少的砝碼組合稱出盡可能多的重量。如果只有5個砝碼,重量分別是1,3,9,27,81 則它們可以組合稱出1到121之間任意整數重量 砝碼允許放在左右兩個盤中 本題目要求程式設計實現 對使用者給定的重量,給出砝碼組合方案。例如 使用者輸入 5程式輸出 9 3 1 使用者輸入...