工作环境(蓝色粗体字为特别注意内容)
1,开发环境:Windows CL编译器,Vim编辑器
2,编程语言:C++
有个公司的C++笔试中有这样一道编程题:
方块积木,红色代表正数A,黑色代表负数B,选出17块积木排成一排,
使得任意相邻7块积木之和都小于0,如何挑选才能使得17块积木之和最大,最大值是多少?
输入
正数A 负数B
A和B的绝对值小于10000
输出
积木之和的最大值
样例输入
10 -61
样例输出
28
这个题目的思路是这样的:
1、先把正数赋值个一个长度为17的数组。
2、定义一个长度为7的窗口,该窗口从数组的第一位开始逐位往后移动
3、当发现位于窗口内的数之和大于等于0则从该窗口最后一位开始插入负数,直到位于窗口内的数之和小于0
具体C++代码如下:
/**********************************************
*
* Injoy Life Injoy Programming
*
* Author : Pang
* Email : 1***64@qq.com
* Last modified : 2018-09-12 22:02
* Filename : Main.cpp
* Description : 有红黑两种颜色的方块积木,红色代表正数A,黑色代表负数B,选出17块积木排成一排,
使得任意相邻7块积木之和都小于0,如何挑选才能使得17块积木之和最大,最大值是多少
* Copyright: Copyright c 2015 Pang. All rights reserved.
***************************************