/*
雖然也認同這題是基礎的搜尋題,但因做題太不熟練,寫了好久~
*/#include #include #include using namespace std;
const int n=4;
const int nn=1000;
int n,types,sum,maxz,a[nn],hash[nn],p[n],s[n];
bool tie;
void reanswer(int cnt,int _types)
void judge(int cnt,int _types)
}void init()
void dfs(int x,int k,int cnt,int _types)
if (cnt==n || k==n || x>(n-cnt)*a[n-1]) return; //剪枝(1.數量已達4;2.郵票種類列舉完了;3.當前郵票組合過小,已明顯不能組合成功)
int y=x;
for (int i=cnt; i=a[k]; i++)
dfs(y,k+1,cnt,_types); //當前郵票不用時
}int main()
sort(a,a+n); //排序,一為之後的輸出有序,二使得dfs能優先搜尋到有效組合
while (scanf("%d",&x),x)}}
return 0;
}
POJ1010 體現搜尋藝術的「水」題
問題簡述 給出不同型別的一組郵票,型別面值可能相同。求符合總面值,且最多取4張郵票的最佳方案。最佳方案滿足以下要求 型別數最多。如果型別數相同,則張數少者。如果張數也相同,則單張面值最大者。如果以上都相同,則無最佳方案 平局 問題分析 搞了整整3天,絞盡腦汁也沒想出個好方案。看了一下關於該題的dis...
poj3279 (搜尋,好題 )
前題 這題是之前 做鄺斌搜尋專題遺留下的三題之一,最近為了複習搜尋姿勢補上。題意 最大15 15平面 二維陣列 有1有0,對乙個地方操作,與他相鄰四個包括他自己會翻轉 0變1,1變0 求出最少的操作讓全部變成0,輸出操作位置圖。思路 很明顯每個點操作一次就夠了,兩次恢復原樣,然後 我就想不到了.15...
POJ 1321搜尋簡單題
在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請程式設計求解對於給定形狀和大小的棋盤,擺放k個棋子的所有可行的擺放方案c。input 輸入含有多組測試資料。每組資料的第一行是兩個正整數,n k,用乙個空格隔開,表示了將...