2017年360最后一道编程题

简介: A、B两伙马贼意外地在一片沙漠中发现了一处金矿,双方都想独占金矿,但各自的实力都不足以吞下对方,经过谈判后,双方同意用一个公平的方式来处理这片金矿。
A、B两伙马贼意外地在一片沙漠中发现了一处金矿,双方都想独占金矿,
但各自的实力都不足以吞下对方,经过谈判后,
双方同意用一个公平的方式来处理这片金矿。
处理的规则如下:
他们把整个金矿分成n段,由A、B开始轮流从最左端或最右端占据一段,直到分完为止。


马贼A想提前知道他们能分到多少金子,因此请你帮忙计算他们最后各自拥有多少金子?

(两伙马贼均会采取对己方有利的策略)

/*
A、B两伙马贼意外地在一片沙漠中发现了一处金矿,双方都想独占金矿,
但各自的实力都不足以吞下对方,经过谈判后,
双方同意用一个公平的方式来处理这片金矿。
处理的规则如下:
他们把整个金矿分成n段,由A、B开始轮流从最左端或最右端占据一段,直到分完为止。

马贼A想提前知道他们能分到多少金子,因此请你帮忙计算他们最后各自拥有多少金子?
(两伙马贼均会采取对己方有利的策略)
*/ 
#include "stdafx.h"
#include<iostream>
#include<vector>
using namespace std;

vector<int>count(int m, vector<int>nums) {
	int sumA = 0, sumB = 0, flag = 0, temp=0;
	vector<int>answer;
	for (int i = 0; i < m - 1; i += 2) {
		//上次存的索引位置为偶数
		if (flag % 2 == 0) {
			//此时不需要换
			if (sumA + nums[i] >= sumB + nums[i + 1]) {
				sumA += nums[i];
				sumB += nums[i + 1];
			}
			//此时要换
			else if (sumA + nums[i] < sumB + nums[i + 1]) {
				temp = sumA;
				sumA = sumB;
				sumB = temp;
				sumA += nums[i + 1];
				sumB += nums[i];
				flag = i + 1;
			}
		}
		//上次存的索引位置为奇数
		else if (flag % 2 != 0) {
			//此时无需更换
			if (sumA + nums[i + 1] >= sumB + nums[i]) {
				sumA += nums[i + 1];
				sumB += nums[i];
			}
			//此时需要更换
			else if (sumA + nums[i + 1] < sumB + nums[i]) {
				temp = sumA;
				sumA = sumB;
				sumB = temp;
				sumA += nums[i];
				sumB += nums[i + 1];
				flag = i;
			}
		}
	}
	answer.push_back(sumA);
	answer.push_back(sumB);
	return  answer;
}

int main()
{
	cout << "请输入测试组数" << endl;
	int n = 0, m = 0, temp=0;
	vector<int>nums,answer;
	cin >> n;
	while (n) {
		cout << "请输入每组数据的元素个数" << endl;
		cin >> m;
		cout << "请输入每个元素的值" << endl;
		for (int i = 0; i < m; i++) {
			cin >> temp;
			nums.push_back(temp);
		}
		cout << "元素输入完毕" << endl;
		//调用函数
		answer=count(m, nums);
		cout << "马贼A获得的钱币数:" << answer[0]<< endl;
		cout << "马贼B获得的钱币数:" << answer[1] << endl;
		//输出个换行,为了美观
		cout << endl;
		n--;
		nums.clear();
	}
    return 0;
}


相关文章
|
5月前
|
前端开发 Java 调度
全图化编程
全图化编程
|
10月前
|
C语言 C++
编程萌新的内心独白
编程萌新的内心独白
|
10月前
|
设计模式 算法 安全
给大家推荐10本最优秀的编程书
给大家推荐10本最优秀的编程书
342 0
|
10月前
|
算法 安全 开发者
小孩子学什么编程?
Scratch 是麻省理工学院(MIT)为儿童学习编程而设计开发的一款工具。使用者不用去记复杂的语法,甚至不需要会英语,就可以创建自己的程序、动画、游戏等作品。构成程序的命令和参数通过积木形状的模块来实现,用鼠标拖动模块到程序编辑栏,像搭积木一样就可以实现编程了。
|
JavaScript 前端开发 Java
|
程序员
编程会是你自由职业的一种选择吗
欢迎来到我的小院,前几天有个曾经我带过小弟问我,大侠我最近想从事自由职业,你能帮我参谋参谋嘛,我很高兴他来咨询我。思考后,我写了这段建议,希望可以帮助到他,同时也能给想从事自由职业的年轻人一些参考。
编程会是你自由职业的一种选择吗
|
程序员 Ruby
松本行弘:我的编程人生
松本行弘:我的编程人生
204 0
松本行弘:我的编程人生
|
存储
编程
编程
189 0
|
Java 程序员
我似乎理解了编程的意义
编程的意义是什么,我又为什么要编程呢? 这是一个不时会浮现在我脑海中的问题,它来得并不频繁,但每次却都伴随着对自己职业生涯或人生目标的质疑而产生,令我感到些许困惑和不安。而在这十几年的职业生涯中,我也似乎总能在每个阶段为自己找到一个继续热爱编程的理由,直到它已无法解答再一次疑惑的产生。
1068 0
为什么学编程
知识在于点滴积累
727 0