在乙個陣列中找到等於某個數的組合

2021-06-20 13:54:30 字數 1550 閱讀 3911

方法1:

#include#include#include#include#include #includeusing namespace std;

void getresult(vectora,int result)

#include #include using namespace std;

typedef vectorlistd;

typedef vectorlistld;

// 給定乙個數字陣列,從這個陣列中找出所有的組合,使組合中各數字相加等於乙個給定數值

// nums = 給定陣列

// num = 給定數值

// index = 當前操作的數字在陣列中的index

// count = 儲存所有組合的可能數

// results = 儲存所有組合的情況

void numcount(double nums, double num, int index, int &count, listld &results,int numlen)

if (index == - 1)

//進入到下一遞迴

numcount(nums, num, index + 1, count, results,numlen);

} //大於給定數,跳過此數,進入到下一次遞迴

else if (nums[index] > num)

//此組合無效,跳到下一遞迴

numcount(nums, num, index + 1, count, results,numlen);

} //小於給定數,則儲存此數至快取之後,給定數減去此數,然後進入下一次遞迴,之後將此數從快取中刪除

else

results[results.size() - 1].push_back(nums[index]); //給定數減去此數

int tempnum = num - nums[index]; //進入到下一遞迴

numcount(nums, tempnum, index + 1, count, results,numlen); //將此數從快取中刪除

listd::iterator itr= results[results.size() - 1].begin();

itr+=(results[results.size() - 1].size() - 1);

results[results.size() - 1].erase(itr);

if (index < numlen - 1)

} } int main()

; listld testlist;

int a = 0,b=0;

numcount(test,10,a,b,testlist,10);

return 0;

}

在乙個陣列中找到等於某個數的組合

方法1 include include include include include includeusing namespace std void getresult vectora,int result include include using namespace std typedef v...

在有序旋轉陣列中找到乙個數

題目 有序陣列arr可能經過一次旋轉處理,也可能沒有,且arr可能存在重複的數。例如,有序陣列 1,2,3,4,5,6,7 可以旋轉處理成 4,5,6,7,1,2,3 等。給定乙個可能旋轉過的有序陣列arr,再給定乙個數num,返回arr中是否含有num。public class getnum in...

在有序旋轉陣列中找到乙個數

在有序旋轉陣列中找到乙個數 有序陣列arr可能經過一次旋轉處理,也可能沒有,且arr可能存在重複的數。例如,有序陣列 1,2,3,4,5,6,7 可以旋轉處理成 4,5,6,7,1,2,3 等。給定乙個可能旋轉過的有序陣列arr,再給定乙個數num,返回arr中是否含有num 關於旋轉操作 可以簡單...