首页 > 解决方案 > 电话编程逻辑

问题描述

部分电话使用率可描述如下:

通话的第一分钟花费min1几美分。

从第 2 次到第 10 次(含)的min2_10每分钟每分钟花费美分。

第 10 分钟后,每增加一分钟通话费用min11为 1 美分。

在通话之前,您的帐户上有s美分。您可以拥有的最长通话时间(以分钟为单位,向下舍入到最接近的整数)?

输入数据:

对于min1 = 3, min2_10 = 1,min11 = 2s = 20, 输出应该是phoneCall(min1, min2_10, min11, s) = 14.

原因如下:

第一分钟花费 3 美分,剩下 20 - 3 = 17 美分。第 2 分钟到第 10 分钟的总成本是 1 * 9 = 9,所以你可以再讲 9 分钟,仍然有 17 - 9 = 8 美分。下一分钟花费 2 美分,这意味着您可以多说 8 / 2 = 4 分钟。因此,您可以拨打的最长电话是 1 + 9 + 4 = 14 分钟。

我不确定我的代码逻辑有什么问题。

int phoneCall(int min1, int min2_10, int min11, int s) {
    int sum = 0;

    if (s >= min1) {
        sum++;
        s = s - min1;
        for (int i = 1; i <= 9; i++) {
            if (s >= min2_10) {
                sum = sum++;
                s = s - min2_10;
            } else
                break;
        }
        sum = sum + s / min11;

    }
    return sum;
}

标签: javalogic

解决方案


在 for 循环内的 if 语句中,您可以在此处执行以下两项操作之一,以使您的 return 为 14。

更改 sum=sum++;sum += 1;或删除它, sum=这样它就可以了 sum++;

这应该返回 14 作为总和。


推荐阅读