cpython3


私信TA

用户名:smartZhou

访问量:80975

签 名:

等  级
排  名 35
经  验 14085
参赛次数 1
文章发表 99
年  龄 0
在职情况 学生
学  校
专  业 计算机科学与技术

  自我简介:

TA的其他文章

编译测试:

Linux  Debain Ubuntu/Kali g++

微信图片_20190103171251.png

Windows Visual Studio/华为Source Insight 4.0

微信图片_20190103172128.png

解题思路:
本题我的方法是进行数学推导! 毕竟像这种竞赛水题考的根本不是编程语言,而是算法!

1个空瓶     换0个

2个空瓶     借一个  换1个

3个空瓶     换一个

4个空瓶      3个换1个   喝完后剩下2个空瓶  再借一个   共换2个

5个空瓶      3个换1个   喝完后剩下3个空瓶  再换一个   共换2个

6个空瓶      6个换2个   喝完后剩下2个空瓶  再借一个   共换3个

7个空瓶      6个换2个   喝完后剩下3个空瓶  再换一个   共换3个

8个空瓶      6个换2个   喝完后剩下4个空瓶  4个空瓶再换2个(见上面4个空瓶处解释)    共换4个

9个空瓶      9个换3个   喝完后剩下3个空瓶  3个空瓶换1个     共换4个

10个空瓶    9个换3个   喝完后剩下4个空瓶  4个空瓶再换2个  共换5个

.......................

发现规律了吗???

空瓶数          可换数

1                        0

2                        1

3                        1

4                        2

5                        2

6                        3

7                        3

8                        4

9                        4

10                      5

11                      5

.................

n                        n/2


注意事项:

本题我采用的是C++编写,只要看懂算法,什么语言都一样。C/C++/python/C#/java等都能迎刃而解!

参考代码

#include <iostream>
#include <vector>
using namespace std; 
int main()
{
	int num;
	vector<int> vec;  //C语言的同学把vec理解成数组即可!
	while(cin>>num)
	{
		if(num==0) break;   //如果输入的是0,根据题意,跳出即可!
		vec.push_back(num); //把数据存入"数组"
	}
	for(int i=0; i<vec.size(); i++)
	     vec[i]/=2;    
	 //输出"数组"内容
	for(vector<int>::iterator iter=vec.begin(); iter!=vec.end(); iter++)
	     cout<<*iter<<endl;
	return 0;
}


 

0.0分

2 人评分

新上线《蓝桥杯辅导》课程,近五年的蓝桥杯省赛与国赛真题都有,从读题开始理解题意、梳理思路、实现代码再提交评测全过程,可有效提升获奖比例甚至进国赛!课程介绍、试听请猛击这里

  评论区

  • «
  • »