解题思路:这道题其实有两种思路
1.先向老板借N/2个瓶子,然后换N/2瓶汽水,然后把喝完的N/2个汽水瓶还给老板
2.每3个汽水瓶向老板换1瓶汽水,自己剩下N/3 + N%3个汽水瓶,然后重复前面的做法,直到拥有的汽 水瓶数量小于3为止,这时候如果还剩2个汽水瓶,向老板借一瓶,然后喝完以后把3个空瓶还给老板
注意事项:第二种思路注意递归的边界即可
参考代码:
1.#include<iostream>
using namespace std;
int main()
{
int n;
while(1)
{
cin >> n;
if(n == 0)
{
break;
}
cout << n / 2 << endl;
}
return 0;
} 2.#include<iostream>
using namespace std;
int total = 0;
int f(int n);
int main()
{
int n;
while(1)
{
cin >> n;
if(n == 0)
{
break;
}
cout << f(n) << endl;
total = 0;
}
return 0;
}
int f(int n)
{
if(n < 2)
return 0;
if(n == 2)
return 1;
total += n / 3;
int res = n % 3 + n / 3; //剩余空瓶数
f(res);
return total;
}
0.0分
15 人评分
A+B for Input-Output Practice (C++代码)浏览:632 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:485 |
A+B for Input-Output Practice (C语言代码)浏览:506 |
大家好,我是验题君浏览:604 |
1071题解浏览:585 |
C二级辅导-温度转换 (C语言代码)浏览:802 |
第三届阿里中间件性能挑战赛-总决赛亚军比赛攻略浏览:1176 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:497 |
1231题解(注意理解“输入多个测试实例”)浏览:830 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:611 |