給出乙個正整數集合,如果取出其中一些數字,能夠使這幾個數字相加,等於集合中的乙個數,就說明滿足乙個等式。比如集合{1,2,3,4,6},1+2=3,1+2+3=6都符合題意,但是1+3+4=2+6不符合題意。
輸入資料有多組。
第一行輸入乙個n(3<=n<=15),n表示這個正整數集合有多少個數;
第二行輸入這n個整數(這n個數是按遞增順序輸入的)。
對於每個正整數集合,找出其中滿足題意的等式個數,輸出結果。
31 2 3
61 2 3 4 5 6
17
解題思路:
由於給定的數是按遞增順序輸入的,所以就乙個乙個數取出來,搜尋一遍,看它前面的數能不能相加等於這個數。
比如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,退出。...