poj 1013 counterfeit dollar
題意:有一打硬幣,其中有乙個是假幣,質量可能較輕,也可能較重。通過三次稱重將假幣找出。
由於計算機很難模仿人的想法來實現問題。這道題我糾結了很久。
最後我是通過一一枚舉的笨方法做的。就是從a硬幣開始到l硬幣結束,一一假設其為假幣,其中又分為輕和重。當符合三次稱重之後便找到了假幣。
後來看網上有人是將三次稱重這樣實現的:給這十二枚硬幣賦初值。如果是even,那麼硬幣值不變。如果是up,那麼左邊的自加,右邊的自減。由於對於不確定的硬幣還要做下一次測試。所以通過三次測試之後,偏離初值最大的必然為假幣
#include
#include
#include
#include
using namespace std;
int main ()
,visit[15]= ;
bool flag=true;
for (i=0; i<3; i++)
cin>>al[i]>>ar[i]>>a[i];
for (i=0; i<24; i++)
{flag=true;
v[i/2]=(i%2==0?-1:1);
for (k=0; k<3; k++)
{int left=0,right=0;
for (j=0; jright)) flag=false;
if (strcmp(a[k],"down")==0 && !(left
POJ 水題若干
poj 3176 cow bowling 這道題可以算是dp入門吧。可以用乙個二維陣列從下向上來搜尋從而得到最大值。優化之後可以直接用一維陣列來存。ps 用一維的時候要好好想想具體應該怎麼存,還是有技巧的 include include include includeusing namespace ...
POJ水題初級
初期 一.基本演算法 1 列舉.poj1753,poj2965 2 貪心 poj1328,poj2109,poj2586 3 遞迴和分治法.4 遞推.5 構造法.poj3295 6 模擬法.poj1068,poj2632,poj1573,poj2993,poj2996 二.圖演算法 1 圖的深度優先...
poj入門水題8
1.2141 message decowding 解釋 又是字母翻譯題,輸入的第一行是小寫字母代表的是a z分別代表的是什麼字母,第二行是要翻譯的話,輸出翻譯的話的長度和第二行一樣。解法 前面有寫過,用陣列儲存對應字母,然後輸出。tricks 注意大寫字母的處理,我處理的方式是 找出大小寫之間的關係...