題目:腦客愛刷題
給定乙個全是正數的陣列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 ...