Hãy đếm số cách để tạo thành một bộ ba mà không thể đại diện cho bên hình tam giác, và sau đó chúng ta trừ đi giá trị này từ - tổng số cách để tăng gậy không quá l trong tổng số. Con số này được lấy từ phân vùng của l thành 4 summands (la + lb + lc + unusedl = l), hoặc có thể được tính bằng cách sử dụng một vòng lặp for. Bây giờ chúng ta xem xét gấp ba a + la, b + lb, c + lc, nơi la + lb + lc ≤ l, la, lb, lc ≥ 0. Fix các bên tối đa, ví dụ như nó sẽ là một + la. Chúng tôi sẽ phải làm các algo sau cho b + lb và c + lc trong cùng một cách. Các ba không phải là một hình tam giác với tối đa bên a + la nếu a + b la ≥ + lb + c + lc. Nếu chúng ta lặp qua la giữa 0 và l, chúng tôi có các điều kiện sau đây trên lb, lc: lb + lc ≤ a - b - c + la, lb + lc ≤ l - la, lb, lc ≥ 0. Vì vậy, không số nguyên âm lb, lc nên được như vậy mà lb + lc ≤ min (a - b - c + la, l - la). Nếu chúng ta ký tối thiểu này là x hơn chúng ta có thể chọn lb, lc theo những cách khác nhau (một lần nữa, chúng tôi chia thành ba x summands: lb, lc và một số lượng chưa sử dụng). Ngoài ra khi chúng tôi sửa chữa lb, có x - lb + 1 cách để chọn lc, vì vậy số lượng tổng thể của cặp lb, lc là vì vậy chúng tôi có được cùng một công thức. Tóm lại, chúng ta cần phải lặp qua các bên tối đa và trong Ngoài ra phía đó, sau đó viết các công thức, và trừ đi kết quả từ tổng số bổ sung khác nhau để các bên. Sự phức tạp của giải pháp là O (l).
đang được dịch, vui lòng đợi..
