給定整數a1,a2,···,an,判斷是否可以從中選出若干數,使他們的和恰好為k。
(1<=n<=20 -1e8<=ai<=1e8 -1e8<=k<=1e8)
樣例1input 4
1 2 4 7 13
output
yes
13=2+4+7
樣例2input 4
1 2 4 7 15
output no
///dfs
#includeint a[25];
long long n,k;
bool dfs(long long i,long long sum)
int main()
}}void solve()}}
printf("%d\n", res);//dfs的次數即為水窪數量
}int main()}}
solve();
}}
breadth-first search,簡稱bfs,從某個狀態出發探索所有可以到達的狀態。給定乙個大小為n×m的迷宮。迷宮由通道和牆壁組成,每一步可以向鄰接的上下左右四個的通道移動。請求出從起點到終點所需的最小步數。請注意,本題假定從起點一定可以移動到終點。(n,m≤100)('#', '.' , 's', 'g'分別表示牆壁、通道、起點和終點)
輸入:
10 10
#s######.#
......#..#
.#.##.##.#
.#........
##.##.####
....#....#
.#######.#
....#.....
.####.###.
....#...g#
輸出:
22
#include#includeusing namespace std;
const int inf = 100000000, maxn = 105;
typedef pairp;
char maze[maxn][maxn];//表示迷宮的字串的陣列
int n, m, sx, sy, gx, gy;//s起點,g終點座標
int d[maxn][maxn];//到各個位置的最短距離的陣列
int dx[4] = , dy[4]= ;//4個方向移動的向量
int bfs()//求從(sx,sy)到(gx,gy)的最短距離,若無法到達則是inf}}
return d[gx][gy];
}int main()
挑戰程式設計競賽 樹
二叉樹的表達 樹的遍歷 從根r到結點x的路徑長度為x的深度 depth 結點x到葉結點的最大路徑長度成為結點x的高。請編寫乙個程式,輸出給定有根樹t中各節點u的資訊。採用 左子右兄弟表示法 1 結點u的父節點 2 結點u最左側的子結點 3 結點u右側緊鄰的兄弟結點 引用u.parent即可知道結點u...
挑戰程式設計競賽 硬幣遊戲
首先明確此為0和博弈問題,我們始終以ali cealice alic e的觀點來看待問題。定義ali cealice alic e贏為可解.因此我們採用記憶化搜尋,整個搜尋空間最多為o x p o xp o xp 便可以解決此問題。include includeusing namespace std...
ACM挑戰程式設計競賽1 1抽籤
試題描述 你的朋友提議玩乙個遊戲 將寫有數字的n 個紙片放入口袋中,你可以從口袋中抽取4 次紙片,每次記下紙片上的數字後都將其放回口袋中。如果這4 個數字的和是m,就是你贏,否則就是你的朋友贏。你挑戰了好幾回,結果一次也沒贏過,於是怒而撕破口袋,取出所有紙片,檢查自己是否真的有贏的可能性。請你編寫乙...