Java 计数表示和

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 =

给定整数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 = 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的想法。