您的位置:首页 > 职场人生

黑马程序员-----------反向推导的尝试

2014-09-20 21:28 225 查看
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------


/*

 * 28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐?(需写出分析思路)

 * 分析:1,要使28个人都能喝到,假设需要x瓶,x对3取余,1瓶可乐要3瓶盖,

 * 2,先假设有x瓶,看够多少人喝,然后反向推导

 * 3,找到规律,总瓶数中没有3的倍数,因为是3的倍数的话还可以换

 * 

 *

 */

import java.io.*;

public class TestString extends Thread {
public static void main(String[] args) throws Exception {

method_1(28);
}

private static void method_1(int p) throws Exception {

// 当是3的倍数时,需要多拿一瓶,
if (p % 3 == 0) {
int p1 = mehod_2(p + 1);
System.out.println(p1);
}
// 当不是3的倍数是不需要多拿,
else {
int p1 = mehod_2(p);
System.out.println(p1);
}
}

// 定义方法返回需要的瓶数
private static int mehod_2(int p) {
int i = 0, j = 0, p1 = 0, p2 = 0, s = 0;
while (s != p) {
p1++;
p2 = p1;
s = p2;
while (p2 >= 3) {
i = p2 % 3;
j = p2 / 3;
p2 = i + j;
s += j;
}
}
return p1;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息