我想知道如果我们添加列表的元素,如何搜索数字,例如T。 例如,如果我有一个列表L = [1,5,-2,6]和T = 3,则存在T.
列表中有20到30个元素,任何想法?
答案 0 :(得分:0)
好吧,如果有人想知道有一天我发现了什么:
final nt TAB_SIZE = 30;
int[] tab = new int[TAB_SIZE];
for(int i = 0; i < TAB_SIZE; i++){
tab[i] = i;
}
int T = -1;
int n = tab.length;
if (isSubsetSum(tab, n, T))
System.out.println("Found");
else
System.out.println("Not found");
public boolean isSubsetSum(int tab[], int n, int T){
if (T == 0)
return true;
if (n == 0) //So T !=0
return false;
//If the last element is higher, we ignore it
if (tab[n-1] > T)
return isSubsetSum(tab, n-1, T);
//Otherwise, looking if the sum can be obtain bith adding ou excluding the last element
return isSubsetSum(tab, n-1, T) || isSubsetSum(tab, n-1, T-tab[n-1]);
}
此算法非常快,但仅适用于正值