当前位置: 首页 > news >正文

2017年360最后一道编程题

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;
}


相关文章:

  • 翻译:CREATE PROCEDURE语句(已提交到MariaDB官方手册)
  • 智能手机拍照进化论:从传感器到算法摄影
  • 如何使用qperf来衡量网络带宽和延迟性能?
  • 织梦dedecms是什么?
  • 图片的缩放处理
  • CSS: The resize Property
  • vue中引入element ui中的css报错
  • MySQL学习【第九篇存储引擎】
  • 分布式监控-open-falcon
  • PV PVC - 每天5分钟玩转 Docker 容器技术(150)
  • 阿里九年架构师教你如何学会阅读源码
  • Viewpager+FragmentStatePagerAdapter动态添加,删除,移动位置,(局部)更新页面(Fragment)不闪屏,不错位解决方案...
  • Kubernetes日志分析利器:Elassandra部署使用指南
  • 可汗学院
  • 泛在电力物联网有项核心技术 你听过没有?
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • Android 架构优化~MVP 架构改造
  • golang 发送GET和POST示例
  • HTTP中的ETag在移动客户端的应用
  • java2019面试题北京
  • Kibana配置logstash,报表一体化
  • Vim 折腾记
  • vue-loader 源码解析系列之 selector
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 读懂package.json -- 依赖管理
  • 诡异!React stopPropagation失灵
  • 排序算法学习笔记
  • 如何用vue打造一个移动端音乐播放器
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 通过几道题目学习二叉搜索树
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 组复制官方翻译九、Group Replication Technical Details
  • ​虚拟化系列介绍(十)
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #Z2294. 打印树的直径
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (HAL库版)freeRTOS移植STMF103
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (强烈推荐)移动端音视频从零到上手(上)
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (四) Graphivz 颜色选择
  • .Net Core缓存组件(MemoryCache)源码解析
  • .NET MVC 验证码
  • .NET 服务 ServiceController
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .NET项目中存在多个web.config文件时的加载顺序
  • .Net中wcf服务生成及调用
  • .NET中winform传递参数至Url并获得返回值或文件