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公司##笔试题目##题解#