我想从用户那里得到一个数字并计算出可以用给定长度形成多少个不同的三角形,例如:
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);
}
答案 0 :(得分:0)
你可以轻松地使它成为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)
}
}
答案 1 :(得分:0)
你可以在O(1):
中完成int n = input.nextInt();
long value = Math.round(((long)n*n)/12d) - ((long)n/4)*(((long)n + 2)/4);