陣列 DP 陣列的最小不可組成和

2021-06-28 14:46:36 字數 837 閱讀 4845

題目:腦客愛刷題

給定乙個全是正數的陣列arr,定義一下arr的最小不可組成和的概念:

1,arr的所有非空子集中,把每個子集內的所有元素加起來會出現很多的值,其中最小的記為min,最大的記為max;

2,在區間[min,max]上,如果有一些正數不可以被arr某乙個子集相加得到,那麼這些正數中最小的那個,就是arr的最小不可組成和;

3,在區間[min,max]上,如果所有的數都可以被arr的某乙個子集相加得到,那麼max+1是arr的最小不可組成和;

請寫函式返回arr的最小不可組成和。

struct pair_hash

};void getfirstunformednum_core(const int* num,const int length,const int index,const int presum,unordered_set&sumset,unordered_set,pair_hash> &iscompute)

iscompute.emplace(tmp);

}int getfirstunformednum(const int* num,const int length)

//有可能從minnum一直到int_max都不是「最小不可組成和」,所以此時返回0

return 0;

}

高階:如果已知arr中肯定有1這個值,怎麼實現能更快一些?

//本程式不考慮溢位

int getfirstunformednum_with_one(vectornum)

return rangemax+1;

}

正數陣列的最小不可組成和

給定乙個正整數陣列arr,其中所有的值都為整數,以下是最小不接組成和的概念 arr 1,2,3,4 返回11 arr 2,3,4 返回7 public intbaoli intarr for int i min 1 i integer.max value i return0 public void ...

正數陣列的最小不可組成和

題目 給定乙個正數陣列arr,其中所有的值都是整數,以下是最小不可組成和的概念 把arr每個子集內的所有元素加起來會出現很多值,其中最小的記為min,最大的記為max。在區間 min,max 上,如果有數不可以被arr某乙個子集相加得到,那麼其中最小的那個數就是arr的最小不可組成和。在區間 min...

正數陣列的最小不可組成和

正數陣列的最小不可組成和 給定乙個正數陣列arr,其中所有的值都為整數,以下是最小不可組成和的概念 請寫函式返回正數陣列arr的最小不可組成和 時間複雜度為o n i 1nar ri o n times sum n arr i o n i 1n arri 額外空間複雜度為o i 1n arri o ...