用天平稱重

2021-08-01 15:01:56 字數 1380 閱讀 4813

問題:

用天平稱重時,我們希望用盡可能少的砝碼組合稱出盡可能多的重量。

如果只有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 使用者輸入...