b
两边之和<=第三边的都不能组成三角形所以是1 1 2 3 5 8......
最小的划分就是这样,然后再开个前缀和存一下,最后和a比一下就出来了。
class Solution {
public:
/**
*
* @param a long长整型 木棒的长度
* @return int整型
*/
#define ll long long
const long long N=1e2+5;
int stick(long long a) {
// write code here
ll num[N],sum[N],i;
num[1]=1;num[2]=1;
sum[1]=1;sum[2]=2;
for(i=3;num[i]<=a;i++)
{
num[i]=num[i-1]+num[i-2];
sum[i]=sum[i-1]+num[i];
if(sum[i]>a) return i-1;
}
// return a;
}
};
京公网安备 11010502036488号