解题思路:解题思路就是先把第一次换的汽水数和余下空瓶数求出来,再把换的汽水喝掉并把空瓶记录下来再去判断空瓶能否置换汽水,一直下去直到置换的汽水喝完,最后判断空瓶是否=2是就将总置换数+1
注意事项:后续置了汽水空瓶数量记得重置
个人心得:这是我第1个解决定义为困难的的题目,独立解出来了很开心,但是感觉有点复杂于是去看了看题解了解大佬们是如何解题的:他们直接推出了公式:n/2;看到这我震惊到了我用一个几个循环以及几个变量才勉强搞出来但是他们一个变量一个赋值公式就出来了,确实让我明白了差距 但是我也没有气馁 因为经过高二进厂实现让我明白了菜就多练以及有差距很正常 只要自己加油就行 技能高考完了有一个编程题目没有搞出来很伤心也很遗憾但是没有什么用 发生了的事情我不能做任何改变 但要我不想这个事又不太可能 我的境界可能没有那么高吧 。技能高考感觉不太好,看看文化努努力能不能上湖科职很期待大学生活,上大学了有时间练了但我还真不知道到时候我还会不会练 感觉自己还是不够坚定 有时候遇到难题就想放弃但心理又有不甘。啊啊啊多练习吧加油,把他们当做目标也许会给我们带来动力。
在这里说这些可能不太好但是我感觉说出来还是舒服些,希望所有喜欢C的人一定会学有所成,加油!
参考代码:
我的一般解法:
#include<stdio.h>
int main()
{
int i,j,n,k,a[100],b[100],t=0,m;//a是输入数组,b是结果数组,k是第一次换的汽水数量,j是第一次换了汽水余下空瓶的数量,m,t都是下标控制,i就是总换的汽水数量
scanf("%d",&n);
while(n)//输入
{
a[t++]=n;
scanf("%d",&n);
}
for(m=0;m<t;m++)//算结果
{
k=a[m]/3;//第一次换汽水的数量
j=a[m]%3;//第一次换了汽水余下空瓶的数量
for(i=k;k>=1;k--)//把换的汽水喝掉
{
j++;//喝掉一瓶,空瓶++
if(j==3)//若空瓶=3,就又换一瓶汽水
{
i++;//汽水总量++
k++;//再次换瓶汽水
j=0;//空瓶重置值
}
//k不是换的汽水总数,它是帮助算总数的一个值,也就是第一次换的汽水数量以及后续换的汽水数量
}
if(j==2)
i++;//若最后的空瓶=2,总再次++;(就是题目中的借一瓶的意思)
b[m]=i;//存入结果
}
for(t=0;t<m;t++)//输出
printf("%d\n",b[t]);
return 0;
}
大佬的求和公式解法:
#include <stdio.h>
int main()
{
int n;
while (scanf("%d", &n) != EOF && n)
printf("%d\n", n / 2);
return 0;
}
递归写法:
#include<stdio.h>
int fun(int n)
{
if(n<2)//小于2不能换汽水
return 0;
if(n<4)
return 1;//2<n<4换一瓶汽水
else
return fun(n-2)+1;//n>=4换第(n-2)瓶+1瓶 也就是数列第n-2项+1瓶
}
int main()
{
int n;
while(~scanf("%d",&n)&&n)
printf("%d\n",fun(n));
return 0;
}
/*看到这里十分感谢,也相信你也明白了这个题目,加油。*/
0.0分
0 人评分
剔除相关数 (C语言代码)浏览:1924 |
点我有惊喜!你懂得!浏览:2116 |
【绝对值排序】 (C++代码)(利用两个库函数——abs()求绝对值 和 sort()快排)浏览:1518 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:711 |
【偶数求和】 (C++代码)浏览:785 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:609 |
大神老白 (C语言代码)浏览:691 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:545 |
母牛的故事 (C语言代码)浏览:478 |
简单的a+b (C语言代码)浏览:600 |