一个人喝n瓶饮料,每喝够三瓶可以重换一瓶,问他一共可以喝多少瓶

ycscsjj 2010-05-18 09:31:47
一个人喝n瓶饮料,每喝够三瓶可以重换一瓶,问他一共可以喝多少瓶(用Java程序写出来)
...全文
875 67 打赏 收藏 转发到动态 举报
写回复
用AI写文章
67 条回复
切换为时间正序
请发表友善的回复…
发表回复
caicai15 2010-05-26
  • 打赏
  • 举报
回复
测试过:
public static int bbb(int num)
{
int count = 0;
int n = (num / 3);
int m = (num % 3);
if (n > 0)
{
count = (num-m) + bbb(n+m);
}
else
{
count = m;
}
return count;
}
cherie1215225 2010-05-26
  • 打赏
  • 举报
回复
无语,N=1就是只喝一瓶嘛,这还问。。。[Quote=引用 7 楼 antiking 的回复:]
如果n=1呢??
[/Quote]
cherie1215225 2010-05-26
  • 打赏
  • 举报
回复
呵呵,顶。。
whut0802 2010-05-26
  • 打赏
  • 举报
回复
哈哈,小学的时候做过的奥赛题目
zuoguodang 2010-05-26
  • 打赏
  • 举报
回复
喝一瓶就喝一瓶了
kingwood2005 2010-05-26
  • 打赏
  • 举报
回复
很牛逼啊,哈哈
alextnt 2010-05-26
  • 打赏
  • 举报
回复
厉害,真是有意思
xtbzqw 2010-05-25
  • 打赏
  • 举报
回复
给你一段代码

/**
*
* @param count 饮料的瓶数
* @param m 空瓶数,开始的时候为0
* @return 返回count瓶饮料,每3瓶换一瓶,最后能喝的瓶数
*/
public static int countDrink(int count,int m){
if(count<0){
throw new RuntimeException("请输入大于0的数字");
}

int mod=count/3;//这是商
int modCount=count%3;//这是余数

count=count+(modCount+m)/3;

if(mod<=1){
count=count+mod;
}else{
count=count+countDrink(mod,modCount);
}


return count;
}
北狐狸 2010-05-25
  • 打赏
  • 举报
回复
不好意思 #54楼 多不一个接口。。。
北狐狸 2010-05-25
  • 打赏
  • 举报
回复
public class sumPing {
private int sumShu = 0;
private int emptyShu = 0;
sumPing(int firstShu) {
sumShu = firstShu;
emptyShu = firstShu;
System.out.println("get:\t" + firstShu);
System.out.print("-h-:\t" + firstShu);
System.out.println("\t-o-:\t" + firstShu);
}
void jiShuan() {
if(emptyShu > 2) {
System.out.print("-h-:\t" + emptyShu / 3);
//System.out.println("\t-o-:\t" + emptyShu / 3 +"-"+ emptyShu % 3);
System.out.println("\t-o-:\t" + (emptyShu / 3 + emptyShu % 3));
sumShu += emptyShu / 3;
emptyShu = emptyShu / 3 + emptyShu % 3;
this.jiShuan();
} else {
System.out.print("hava:\t" + this.sumShu);
System.out.println("\tempty:\t" + emptyShu);
}
}
public static void main(String[] args) {
sumPing a = new sumPing(9999);
a.jiShuan();
}
}
/*

get: 1001
-h-: 1001 -o-: 1001
-h-: 333 -o-: 335
-h-: 111 -o-: 113
-h-: 37 -o-: 39
-h-: 13 -o-: 13
-h-: 4 -o-: 5
-h-: 1 -o-: 3
-h-: 1 -o-: 1
hava: 1501 empty: 1

get: 502
-h-: 502 -o-: 502
-h-: 167 -o-: 168
-h-: 56 -o-: 56
-h-: 18 -o-: 20
-h-: 6 -o-: 8
-h-: 2 -o-: 4
-h-: 1 -o-: 2
hava: 752 empty: 2

get: 45
-h-: 45 -o-: 45
-h-: 15 -o-: 15
-h-: 5 -o-: 5
-h-: 1 -o-: 3
-h-: 1 -o-: 1
hava: 67 empty: 1

get: 4
-h-: 4 -o-: 4
-h-: 1 -o-: 2
hava: 5 empty: 2

get: 3
-h-: 3 -o-: 3
-h-: 1 -o-: 1
hava: 4 empty: 1

get: 2
-h-: 2 -o-: 2
hava: 2 empty: 2

get: 1
-h-: 1 -o-: 1
hava: 1 empty: 1

*/
interface MyInterFace {

}
class impCharSequence implements CharSequence {
public int length(){
return 0;
}
public char charAt(int index){
return 'A';
}
public CharSequence subSequence(int start, int end){
return null;
}
public String toString(){
return "empety";
}
}
hyuk2460 2010-05-25
  • 打赏
  • 举报
回复
来学习了 拿分走人
mzhoulei 2010-05-25
  • 打赏
  • 举报
回复
一共可以喝n/3+n 结果四舍五入用程序写 就更好写了吧
chenxiaomingit 2010-05-25
  • 打赏
  • 举报
回复
万一老板不借咋办啊
ericSola 2010-05-25
  • 打赏
  • 举报
回复

public int s(int n){
if(n>=3){
return n+s(n/3);
}
return n;
}


这样对不对?
北狐狸 2010-05-21
  • 打赏
  • 举报
回复
一个人喝n瓶饮料,每喝够三瓶可以重换一瓶,
问他一共可以喝多少瓶(用Java程序写出来)
答他一共可以喝n瓶(用不着Java程序写出来)
Decay_念 2010-05-21
  • 打赏
  • 举报
回复
还是.......
Decay_念 2010-05-21
  • 打赏
  • 举报
回复
逐步判断??
andy2u 2010-05-21
  • 打赏
  • 举报
回复
看来数学好还是很必要啊
zhuwen9 2010-05-20
  • 打赏
  • 举报
回复
只算大于3瓶的,如果最后剩两个空瓶可以换一瓶

public static int calculater(int n){
boolean flg = n<=3;
if(flg&&n%3==1) return 0;
if(flg&&(n%3==2||n%3==0)) return 1;
return n+ n/3 +calculater(n/3);
}
  • 打赏
  • 举报
回复
[Quote=引用 33 楼 ycnanevol 的回复:]

引用 3 楼 bao110908 的回复:

比如 N = 22

第一次喝 22 瓶,共余 22 个空瓶,换 7 瓶,多 1 空瓶
第二次喝 7 瓶,共余 8 个空瓶,换 2 瓶,多 2 空瓶
第三次喝 2 瓶,共余 4 个空瓶,换 1 瓶,多 1 空瓶
第四次喝 1 瓶,共余 2 个空瓶,借 1 空瓶换 1 瓶
第五次喝 1 瓶,共余 1 个空瓶,还 1 空瓶


你不是说 第五次喝 1 瓶,共余 1 个空瓶,还 1 空瓶
怎么又说 剩下空瓶数量 (22 * 3) % 2 = 66 % 2 = 0
[/Quote]

因为在第四次借了一个空瓶,因此第五次喝完后的空瓶必须得还给老板,所以就剩 0 个空瓶了。

这句的标点没点好,要这样可能就明白了:

你不是说 第五次喝 1 瓶,共余 1 个空瓶还 1 空瓶
加载更多回复(47)
倒啤酒是一种艺术,绝对是品尝体验的一部分,特别是当你需要足够的泡沫完美地排列在玻璃的边缘。由于比利时是啤酒之乡,我们决定为两种比利时啤酒(Duvel和Jupiler)制作一个浇注机器人,并根据玻璃子尺寸制作机器人,作为我们的Master One项目的一部分。这个想法是为两个啤酒品牌建立一个共同的机器人。基于可用性,我们使用以下组件和材料构建机器人。 硬件:Arduino微控制器。 结构材料:密度板,有机玻璃 3D打印:解放军 建模软件:Solidworks / Inventor 编码:Fritzing和Arduino 步骤1:所需组件 这一步是关于我们的选择和可用性。在其他条件可能有所不同。 直流电机(2个) 径向球轴承(2个) 轴联轴器(2个) 液晶显示屏(1个) 称重传感器(1个) Arduino Uno(1个) 称重传感器模块(放大器HX711)(1个) H桥电机驱动器(1个) 电位器(2个) 中密度纤维板(五金店) 有机玻璃(五金店) 用于3D打印的PLA卷筒* *如果三维打印机不可用,大部分打印件可以无论如何订购或加工。 步骤2:持有人设计 选择您需要制作的啤酒品牌做一个机器人。(经过简短的讨论后,我们决定与一个温和而非常有名的啤酒Jupiler和一个强烈的啤酒Duvel)。对不同的想法进行头脑风暴,以共同的设置为玻璃和子设计合适的支架。(我们遵循scrum的方法来提出一些创新的设计,并用以下两个设计来完成) 持有人: 在Solidworks中设计了两个子,并通过叠加一个或其他来比较两个子。 概述了组合模型的边界,准备了一个壳,并与它们抵消一些。抓手需要被设计来抓住子(我们的抓手通过将三根触手伸出平面而嵌入支架设计中)。 为支架制作一个合适的连接器,将其与执行器/马达连接起来(在我们的例子中,我们将连接器和支架合并在一起,因为我们用PLA来打印三维) 如果分别设计连接器和支架,最好使用两种不同的材料(最好是金属 - 聚合物组合) 玻璃持有人: Duvel和Jupiler的眼镜也采用了类似的方法。玻璃可能不需要复杂的3D打印外壳,但需要一些东西来阻止其不需要的垂直运动。但是,与架单元中的一样,玻璃架也需要连接器连接到执行器。(我们的玻璃支架的概念只是一个L支撑,用于将玻璃放置在两个通用的合适直径之间,然而,由于我们还需要设计一个连接器,因此我们决定在加工支架组件的其余部分时进行3D打印出有机玻璃) 注意:一般来说,可以使用任何两种不同的子和一杯含酒精或不含酒精的饮料。 步骤3:框架设计和组件/材料选择 框架设计 一旦支架设计完成和玻璃,继续框架设计。准备一个粗略的草图勾画了我们关于自动化啤酒倾倒的粗略想法。现在,自动浇注的一个重要因素是,正确固定轴线并确定子和玻璃杯轴之间的精确距离,以便将啤酒精确地倒入玻璃杯中。但是为此,需要至少放置一个轴,然后通过反复试验重复另一个轴的位置。(在我们的例子中,我们固定了子的轴线,并在其周围设计了一个装配体的框架,甚至可以固定玻璃轴并在其周围工作)。 最好将框架设计成两个部分。这将有助于更轻松的组装。(上半部分由有机玻璃制成,为了使啤酒倾倒得更好,下半部分由中纤板制成,上半部分是一个主要部分支撑啤酒浇注的所有结构部件,下半部分主要是上半部分的支撑,还包含电气和电子部件,并具有电池盒设置,上下半部之间的连接使用2个铰链,这种方式如果需要,我们可以很容易地访电子。) 组件选择 为了完美地倒入啤酒,玻璃和子同时进行受控运动。这可以通过在连接到电机的轴的帮助下旋转来完成。电机的选择需要通过计算旋转玻璃和子所需的有效扭矩来完成。旋转编码器/电位器需要在闭环中用直流电来控制角度,如果不是伺服电机的话。(我们使用25千克*厘米扭矩的直流电动机在两个轴上连接一个闭环电位器) 与电机和轴一起,轴联轴器,轴承及其支架,电机,电机夹的良好支撑也需要设计/采购。(我们采购轴承和轴联轴器,3d印刷轴承座,底座支架,电机夹和电机支架,电位器支架和电位器支架) 步骤4:电路设计和传感器选择 这个项目所需的电气部分是: 1个Arduino UNO板; 2x直流电机(高转矩); [ 电机 ] 1个H桥(L298N); [ H桥 ] 1个适配器AC / DC 220V AC-12V DC; 1个称重传感器(0-10kg); [ 称重传感器 ] 1x称重传感器放大器HX711; [ 称重传感器放大器 ] 2个电位计10kΩ; 1个液晶显示器(16x2); 1x内部集成电路协议I2C; 1个按钮(开始按钮); 1个开/关按钮; 不同颜色的电线。 旋转玻璃和子所需的扭矩是非常高的,所以选择了两个高扭矩,低速度的电机,因为我们需要慢慢倒入啤酒。为了控制电机的速度和方向,H-Bridge连接到电机和

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧