訓練題目暴力搜尋題目描述
現有長度為n的數列a和整數m。請編寫乙個程式,判斷a中任意幾個元素相加是否能得到m。a中每個元素只能使用一次。
數列a以及用作問題的q個mi由外界輸入,請對每個問題輸出yes或no。
輸入
第一行輸入n,第二行輸入代表a的n個整數,第三行輸入q,第四行輸入q個整數mi。
輸出
輸出各問題的答案,如果a中元素相加能得到mi則回答yes,反之回答no。
限制
n<=20
q<=200
1<=a的元素<=2000
1<=mi<=2000
樣例輸入
515
710218
24178
2221
10035
樣例輸出
no
noyes
yesyes
yesno
no
題目思路
利用遞迴函式來解決,如果m=1,那麼就不需要任何元素;如果i>=n,那麼超過了題目所提供的數字個數;其餘的就通過遞迴查詢,只要找得到,就返回res的值。
c++**實現
#include
using
namespace std;
int m,n,q;
int a[21]
;//遞迴函式
intsolve
(int i,
int m)
intmain()
scanf
("%d"
,&q)
;// cin>>q;
for(
int i=
0;i)else
}}
ok,解決了。 非常暴力的搜尋演算法 深度優先搜尋演算法
第一題 有1 9 9個數,選取3個數組成以下格式 數字只能用一次,不能重複 有1 9 9個數,選取3個數組成以下格式 數字只能用一次,不能重複 public class demo1 第二題 有1 9 9個數,選取3個數組成以下格式 數字只能用一次,不能重複 如 12 35 47 public cla...
深度優先搜尋演算法
include include define vertexnum 9 struct node typedef struct node graph struct node head vertexnum 定義圖形結構 int visited vertexnum 頂點陣列 深度優先搜尋 void dfs ...
深度優先搜尋演算法
今天我們來複習一下萬能的搜尋演算法之深度優先搜尋演算法。深度優先搜尋演算法顧名思義就是按照樹的延伸不停的往下搜尋,直到樹的盡頭之後再一步一步的回溯回來。好吧,我們直接問你乙個問題,給你乙個數n,讓你輸出從1到這個樹的全排列,你會怎麼寫,會不會想到去用若干個for迴圈?好吧,你肯定錯了,其實他考的就是...