сколько разных треугольников можно сформировать с заданной длиной

Я хочу получить номер от пользователя и вычислить, сколько различных треугольников могут быть сформированы с заданной длиной, например :

5 (2-2-1)

Ответ : 1

12 (5,5,2)(3,4,5)(4,4,4)

Ответ : 3

Я написал некоторые коды, но я хочу более быстрый способ сделать это.
Вот мои коды:

public static void main(String[] args) {

  Scanner input = new Scanner(System.in);
  int t = input.nextInt();

int value = 0;
for (int i = 1; i < t; i++) {
       for (int j = i; j < t; j++) {
           for (int h = j; h < t; h++) {
              if (i+h+j == t & i+j > h & i+h > j & h+j > i)  value++;  
           }   
       }
}

    System.out.println(value);


} 

2 ответа

  1. Вы можете сделать его O(N^2) легко.

    for (int i = 1; i < t; i++) {
           for (int j = i; j < t; j++) {
              int h=t-i-j;
               //check in O(1)
       }
    }