5個砝碼
用天平稱重時,我們希望用盡可能少的砝碼組合稱出盡可能多的重量。
如果只有5個砝碼,重量分別是1,3,9,27,81。則它們可以組合稱出1到121之間任意整數重量(砝碼允許放在左右兩個盤中)。
本題目要求程式設計實現:對使用者給定的重量,給出砝碼組合方案。
例如:使用者輸入:
5程式輸出:
9-3-1
使用者輸入:
19程式輸出:
27-9+1
要求程式輸出的組合總是大數在前小數在後。
可以假設使用者的輸入的數字符合範圍1~121。
解:
這個問題有很多網友用動態規劃來做,這裡我提供一種不同的思路,如果有錯誤之處,請大俠們莫噴。
這個問題有乙個巧合,那就是每個砝碼都是3的多少次方,所以我下面的解題思路是利用3進製來做;
我們可以用19來舉個例子:
首先19用三進製表現出來是0201,這時,我們不動其中的0和1,我們把2變為-1,然後進一位,得出的結果是 1-101,
然後我們就用三進製把這個數求出來,即:1*3^3-1*3^2+1=27-9+1
所以正確答案是:27-9+1
當然這只是乙個巧合,因為3^2就等於3^3-3^2即18=27-9;
這可以推廣到3的n次方上去,但是這個題若是換成4的多少次方來做就得用動態規劃了。
#include
int p(int i)
return count;
}int main()
for(i=0;i<6;i++)
else if(a[i]==2)
n=n/3;
if(n==0)
break;
}if(a[i+1]==1)
printf("%d",p(i+1));
for(j=i;j>-1;j--)
return 0;
}
用C 語言實現八皇后問題
一 問題描述 八皇后問題是乙個以西洋棋為背景的問題 如何能夠在 8 8 的西洋棋棋盤上放置八個皇后,使得任何乙個皇后都無法直接吃掉其他的皇后?為了達到此目的,任兩個皇后都不能處於同一條橫行 縱行或斜線上。二 整體設計思路 1.用web控制項table實現棋盤的布局 table控制項在後台用 生成,多...
八皇后問題(用c語言實現)
八皇后問題 輸入 乙個數字n,表示在n n的 上,合理的擺放n個皇后。輸出 輸出n個皇后所能擺放的全部可能性,0 該位置不擺放皇后,1 在該位置擺放皇后。樣例輸入 1 no answer 2 no answer 4 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 1 ...
用C語言實現FlappyBird
在開始遊戲之前,我們先了解一些輔助函式 void gotoxy int x,int y 將游標調整到 x,y 的位置 void hidecursor 隱藏游標 setconsolecursorinfo getstdhandle std output handle cursor info 我們使用乙個...