本帖最后由 as604049322 于 2014-12-25 19:14 编辑
我先写我的思路后,再看你们的代码
- /*
- 28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,
- 那么要买多少瓶可乐,够28人喝?假如是50人,
- 又需要买多少瓶可乐?(需写出分析思路)
- 思路分析:可以假设只需要买n瓶可乐即可,那么n瓶可乐还有n个瓶盖数
- 可以不断将瓶盖变成可乐,直到瓶盖数小于2。
- 当瓶盖数等于2时,我们可以向别人借一个瓶盖,换成一瓶可乐后喝完,换回去。
- */
- class BuyCoke
- {
- public static void main(String[] args)
- {
- System.out.println(buyCola(28,3));
- System.out.println(buyCola(50,3));
- }
- /**
- 该函数用于处理m人买可乐喝,n个可乐瓶盖可以换一瓶可乐,</br>
- 需要买多少瓶可乐够m人喝的问题。该函数考虑了,当瓶盖数等于n-1时,
- 可以借一个瓶盖喝完再换回去的情况,也就是说只剩下n-1个瓶盖时也依然可以喝一瓶可乐。
- @param total 代表买可乐的人数
- @param num 代表n个可乐瓶盖可以换一瓶可乐
- @return 返回实际需要购买的可乐数
- */
- public static int buyCola(int total,int num){
- int cola;
- int cap;
- int sum;
- for(int i=total/2;i<=total;i++){//结果肯定大于总人数的一半
- sum=i;
- cap=i;
- while(cap>=num){
- cola=cap/num;
- cap%=num;
- cap+=cola;
- sum+=cola;
- }
- if(cap==num-1)
- sum++;
- if(sum>=total)
- return i;
- }
- return 0;
- }
- }
复制代码
|