【发布时间】:2018-02-05 14:19:39
【问题描述】:
假设 N,您获得了所提供的糖果的起始数量,为您提供 T,这样每次您从 N 分发 T 个糖果时,都会添加 1 个糖果。确定您可以分发的糖果数量。
例如。 N=5 , T=2
- Step1: 5-2+1 糖果分发:2 剩余糖果:4
- Step2: 4-2+1 糖果分发:2 剩余糖果:3
- Step3: 3-2+1 糖果分发:2 剩余糖果:2
- Step4: 2-2+1 糖果分发:2 剩余糖果:1
-
Step5:1个糖果分发:1个剩余糖果:0
代码返回:Total sweet:9
我的代码如下:
public static int countSweets(int n, int t) {
//recursive code is commented
/*if(n<t)
return n;
return t+countCandies(n-t+1,t);*/
//simple while loop snippet
int count=0;
while(n>=t)
{
count=count+t;
n=n-t+1;
}
return count+n;
}
我尝试了简单和递归的两种方法。显示的错误是
- simple:超过时间限制
- 递归:堆栈溢出(用于 n 和 t 之间的较大差异)
【问题讨论】:
标签: java algorithm optimization