先计数,再动态规划
class Solution {
public:
int deleteAndEarn(vector<int>& nums) {
fill(map,map+10000,0);
for(vector<int>::iterator it=nums.begin();it!=nums.end();++it)
{
++map[*it];
}
int c1(0),c2=map[1],c3=map[1];
bool f(1);
for(int i=2;i<10001;++i)
{
if(map[i])
{
c3=max(c1+map[i]*i,c2);
c1=c2;
c2=c3;
f=1;
}else if(f)
{
c1=c2;
f=0;
}
}
return c3;
}
private:
short map[10001];
};