京东前端笔试编程求解
发布于 2017-04-07 21:38 2238 次浏览 0 赞 最后一次编辑是 2017-04-07 21:39 来自 试题交流  

请问各位大神,前端编程题的石子分堆和求利润最大化的题的正确解,用JavaScript实现!!!!O(∩_∩)O谢谢

2 条回复
#include <iostream>
using namespace std;

int main() {
	int n, k;
	bool flag; 
	int total;
	while (cin >> n >> k) {
		flag = true;
		total = 0;
		if (n < k) {
			cout << 0 <<endl;
			continue;
		}
		if (n <= 2 * k) {
			cout << 1 << endl;
			continue;
		}
		while (n > 2 * k) {
			total += 2;
			n = n - 2 * k;
			if (flag == true) {
				k = k + 1;
				flag = false;
			}
			else {
				k = k - 1;
				flag = true;
			}
		}
        if (n >= k) {
			total += 1;
		}
		//total += 1;
		cout << total << endl;		
	}
	return 0;
}


2017-04-07 23:48

借了真题里面一位同学的答案~

var line, arr;
line =  read_line().split(' ');
n = parseInt(line[0]);
k = parseInt(line[1]);//该题纯属于数学逻辑题,应该先弄明白如何去分石堆最符合题意,然后下手寻找规律//        最佳分配方式:k+1 k k+1 k ....//       n/(2*k+1) 查看可以分成多少个k+1 k的组队(t个),余数m则为组完队分剩下的;//       讨论两种情况:  第一种:当余数大于等于k时,那么符合题意的石头堆个数就是2t+1;//                                第二种:当余数小于k时,即组队剩下的不足够满足提议,那么最终符合题意的石头堆个数就是2t;var m =n%(2*k+1);var t = Math.floor(n/(2*k+1));if(m>=k){	var res = 2*t+1;
}else{	var res = 2*t;
}
print(res);


2017-04-10 09:19
添加回复
回到顶部