Java 计数表示和
给定整数n,l和r,找出将n表示为两个整数a和B之和的方法的数量,使得l≤ A.≤ B≤ r 范例 对于n=6、l=2和r=4,输出应为Java 计数表示和,java,Java,给定整数n,l和r,找出将n表示为两个整数a和B之和的方法的数量,使得l≤ A.≤ B≤ r 范例 对于n=6、l=2和r=4,输出应为 countSumOfTwoRepresentations2(n, l, r) = 2. 只有两种方法可以将6写成A+B,其中2≤ A.≤ B≤ 4:6=2+4和6=3+3 解决方案: int countSumOfTwoRepresentations2(int n, int l, int r) { int count = 0; int n1 =
countSumOfTwoRepresentations2(n, l, r) = 2.
只有两种方法可以将6写成A+B,其中2≤ A.≤ B≤ 4:6=2+4和6=3+3
解决方案:
int countSumOfTwoRepresentations2(int n, int l, int r)
{
int count = 0;
int n1 = l;
int n2 = r;
while (n1 <= n2) {
while (n1 <= n2) {
if (n1 + n2 == n) {
count++;
}
n2--;
}
n1++;
n2 = r;
}
return count;
}
由于2个while循环,此解决方案的执行时间过长。是否有人建议更好的解决方案,或者我应该对我的代码做什么修改?似乎你可以用这个公式来计算。注l为字母el
x = int((n-l)/2)
if(!(n%2) && (n-l)%2)
{
x = x + 1
}
你的问题是什么?不确定执行时间的长短被认为是缓慢的,在我的机器上以155µ的速度运行。可能的副本似乎需要根据n是否为偶数进行调整。这是基于l只能取l到l和r之间的中间值r=n-l的想法。