360笔试第二题AC代码
攒人品啊,攒人品
看到好多dfs的解法,其实用两层DP解就可以了,代码中的unordered_set不喜欢用,用个N大小的bool数组也是可以的
顺便发一下,上次顺丰最后一道学术交流所使用的并查集的总结博客,只有总结没有代码。地址是并查集.
#include <iostream>
#include <unordered_set>
#include <vector>
using namespace std;
int main(){
int N, M; cin >> N >> M;
vector<int> nums(M);
for(int i = 0; i < M; ++i) cin >> nums[i];
unordered_set<int> last;
for(int i = 1; i <= N; ++i){
last.insert(i);
}
for(int i = 0; i < M; ++i){
unordered_set<int> cur;
for(int x : last){
if(x + nums[i] <= N) cur.insert(x + nums[i]);
if(x - nums[i] >= 1) cur.insert(x - nums[i]);
}
last = cur;
}
cout << last.size() << endl;
return 0;
} 最后,求个offer啊,生活太艰难了
#360公司##笔试题目##题解#