一道簡單的搜尋題 找等式

2021-06-13 10:35:50 字數 909 閱讀 5756

給出乙個正整數集合,如果取出其中一些數字,能夠使這幾個數字相加,等於集合中的乙個數,就說明滿足乙個等式。比如集合{1,2,3,4,6},1+2=3,1+2+3=6都符合題意,但是1+3+4=2+6不符合題意。

輸入資料有多組。

第一行輸入乙個n(3<=n<=15),n表示這個正整數集合有多少個數;

第二行輸入這n個整數(這n個數是按遞增順序輸入的)。

對於每個正整數集合,找出其中滿足題意的等式個數,輸出結果。

3

1 2 3

61 2 3 4 5 6

1

7

解題思路:

由於給定的數是按遞增順序輸入的,所以就乙個乙個數取出來,搜尋一遍,看它前面的數能不能相加等於這個數。

比如1 2 3 4,由於是集合,所以直接從第三個數開始,取出3,滿足的式子只有乙個1+2=3;

然後再取出4,滿足的也只有乙個,1+3=4。

#include #include #include using namespace std;

const int maxn = 20 ;

int arr[maxn] ;

int dfs(int sum,int p)

return temp;

}int main()

{ //freopen("in.txt","r",stdin);

int n , ans ;

while(cin>>n)

{for(int i = 0; i < n ; i++)

cin>>arr[i];

ans = 0;

for(int i = 2; i < n ; i++)

ans += dfs(arr[i],i-1);

cout<

一道簡單的題

阿里巴巴的一道面試題 25.給定乙個整數陣列和乙個整數,返回兩個陣列的索引,這兩個索引指向的數字的加和等於指定的整數。需要最優的演算法,分析演算法的空間和時間複雜度。include include using namespace std struct stwoindex 初始化,同時等於0,說明不存...

一道搜尋好題

這個題真的叫這個名字 一道搜尋好題 我也很絕望 但是這並不是好題推薦 題目描述 給定乙個數s,找任意個正整數a1,a2,an,使得它們的和恰好等於s,且它們的倒數之和與1的差不超過10 6。輸出任意一種方案或者輸出無解。s 65536 輸入樣例 10輸出樣例 2 4 4 看起來非常的不靠譜對不對 實...

一道搜尋好題

給定乙個數s,找任意個正整數a1,a2,an,使得它們的和恰好等於s,且它們的倒數之和與1的差不超過10 6。輸出任意一種方案或者輸出無解。s 65536 解析 事實上也是簡單的搜尋。從小到大列舉每個數,加入試試看。兩個剪枝 當前的和加上最大的和到不了1,退出。當前的和加上最小的和都超過了1,退出。...