------------
|
----
从前往后扫描一遍即可。。
#include <iostream>
#include <cstring>
#include <cmath>
#include <vector>
using namespace std;
class LISNumberDivTwo{
private:
public:
int calculate(vector<int> seq)
{
int ans=0;
int n=seq.size();
for (int i=0;i<n;i++)
{
while (i+1<n&&seq[i]<seq[i+1]) i++;
ans++;
}
return ans;
}
};
------------
|
----
从叶子节点2*n走到2*n+1,遍历了三个城市,采用这种规则走完最下两排城市。
接着计算n-2
推出公式。。。
f[n]=f[n-2]+(2^n)/2; (n>0)
f[0]=1;
#include <iostream>
using namespace std;
class TrafficCongestionDivTwo{
private:
long long two[70];
public:
long long theMinCars(int treeHeight)
{
long long ans=0;
int n=treeHeight;
two[0]=1;
for (int i=1;i<61;i++) two[i]=two[i-1]*2;
while (n>=1)
{
ans+=two[n-1];
n-=2;
}
if (n==0) ans+=1;
return ans;
}
};
------------
------------