三角形两边之和大于第三边,因此不构成三角形的条件就是存在两边之和不超过另一边。所以就是贪心的使得尽量多的段能构成的总长度最小,即按照斐波那契数列的方法切割可以使得切割的段数最大,1,1,2,3,5这样可以使得任意三根木棒不能组成三角形,最后无法切割的部分加到最长的一根里面即可。
class Solution {
public:
/**
*
* @param a long长整型 木棒的长度
* @return int整型
*/
int stick(long long a) {
ull ans = 2;
ull now = 1, sum = 2;
ull x = 1, y = 1;
if(a == 1) {puts("1"); return 0;}
while(1)
{
now = x + y;
if(now > a - sum ) break;
now = x + y;
x = y;
y = now;
ans ++;
sum = sum + now;
}
return ans;
// write code here
}
};
京公网安备 11010502036488号