算法打卡——田忌赛马问题

news2024/12/28 19:36:02

问题简介:就是一个贪心的思想,下面上题目

要求示例输出输入

大体上先比较快马,田的快马与王的快马

其次比较田的慢马与王的慢马,

两处边界比较完全之后可以直接贪心了

几份示例的代码

代码一

#include <bits/stdc++.h>
using namespace std;
int main() {
	int n;
	int tian[2002], qi[2002];
	while(cin>>n,n!=0){
		for (int i = 1; i <= n; i++)
		cin >> tian[i];
	for (int i = 1; i <= n; i++)
		cin >> qi[i];
	sort(tian + 1, tian + 1 + n);
	sort(qi + 1, qi + 1 + n);
	int tm, qm, tk, qk;
	tm = 1, qm = 1;
	tk = n, qk = n;
	int money = 0;
	for (int i = 1; i <= n; i++) {
		if (tian[tk] > qi[qk]) { 
			money += 200;
			tk--, qk--;
		} else if (tian[tk] < qi[qk]) { 
			money -= 200;
			tm++, qk--;
		} else {
			if (tian[tm] > qi[qm]) { 
				money += 200;
				tm++, qm++;
			} else {
				if (tian[tm] < qi[qk]) {
					money -= 200;
					tm++, qk--;
				}
			}
		}
	}
	cout << money<<endl;
	} 
	
	
	return 0;
}

代码二,这个用stl写的,但是有个问题,就是如果用while输入,每调用一次函数,money变量会加倍,这个问题怀疑与vector的特性有关,以后再深究

#include<iostream>
#include<vector>
#include <algorithm>
using namespace std;

int count1=0;//胜利场次 
int count2=0;//平局场次 
int cnt=0;//败北场次 

int tianRac(vector<long long>Tian, vector<long long>King, int n)
{
	int money = 0; // 田忌赢的钱
	int tianh = 0, tiane = n-1, kingh = 0, kinge = n-1;
	// 分别标记田忌马队和齐王马队的最快和最慢的马
	// 共有 n 次比赛,每进行一次,就换下一匹马
	for (int i = 0; i < n; i++){
	// 田忌快马比齐王快马快时,那就和他一较高下
		if (Tian[tianh] > King[kingh]){
			count1++; 
			tianh++;// 下一个
			kingh++;// 下一个
		}
	// 田忌快马不比齐王快马快时,比较慢马是否能赢 
		else {
			// 田忌的慢马比齐王的慢马快时
			if (Tian[tiane] > King[kinge]) {
				count1++; 
				tiane--;
				kinge--;
			}
			// 田忌的慢马不比齐王的慢马快,就用慢马和他快马比
			else if (Tian[tiane] < King[kingh]) {
				cnt++;
				tiane--;
				kingh++;
			}
		}
	}
	count2=n-count1-cnt; 
	money=count1*200-cnt*200;
	return money;	//返回田忌赢的钱
}
int main()
{
	int n;// 比赛双方马的数量
	cout << "公等马几何" << endl;
	cin >> n;
	vector <long long> tian;
	vector <long long> king;
	long long x;
	cout << "将军 马之疾" << endl;
	for (int i = 0; i < n; i++){
		cin >> x ;
		tian.push_back(x);
	}
	cout << "王 马之疾" << endl;
	for (int i = 0; i < n; i++){
		cin >> x ;
		king.push_back(x);
	}
	// 降序排xu
	sort(tian.begin(),tian.end(),greater<long long>());
	sort(king.begin(),king.end(),greater<long long>());
	int result = tianRac(tian, king, n);
	cout<<result<<endl;
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2111984.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构-二维前缀和】力扣1504. 统计全 1 子矩形

给你一个 m x n 的二进制矩阵 mat &#xff0c;请你返回有多少个 子矩形 的元素全部都是 1 。 示例 1&#xff1a; 输入&#xff1a;mat [[1,0,1],[1,1,0],[1,1,0]] 输出&#xff1a;13 解释&#xff1a; 有 6 个 1x1 的矩形。 有 2 个 1x2 的矩形。 有 3 个 2x1 的矩形。 有…

ia复习笔记

HCIA 常用配置以及快捷键&#xff1a;! 查看时间&#xff1a;display clock&#xff1b;修改时间&#xff1a;clock datetime 11:11:11 2023-1-1 查看设备当前的配置&#xff1a;display current-configuration&#xff1b;查看已保存的配置&#xff1a;display saved-config…

水晶连连看 - 无限版软件操作说明书

水晶连连看 – 无限版游戏软件使用说明书 文章目录 水晶连连看 – 无限版游戏软件使用说明书1 引言1.1 编写目的1.2 项目名称1.3 项目背景1.4 项目开发环境 2 概述2.1 目标2.2 功能2.3 性能 3 运行环境3.1 硬件3.2 软件 4 使用说明4.1 游戏开始界面4.2 游戏设定4.2.1 游戏帮助4…

docker拉取redis5.0.5并建立redis集群

1.配置文件 mkdir -p redis-cluster/7001/ mkdir -p redis-cluster/7002/ mkdir -p redis-cluster/7003/ mkdir -p redis-cluster/7004/ mkdir -p redis-cluster/7005/ mkdir -p redis-cluster/7006/cd redis-clustervim 7001/redis.confbind 0.0.0.0port 7001cluster-enabled…

传统CV算法——图像特征算法概述

文章目录 传统CV——图像特征算法概述1. 概述1.1 图像特征概述1. 2 局部特征1.2.1 定义1.2.2 特点1.2.3 常见方法1.2.4 应用 1.3 全局特征1.3.1 定义1.3.2 特点1.3.3 常见方法1.3.4 应用 1.4 局部特征与全局特征的比较1.5 局部特征点1.5.1 斑点与角点 1. 定义2. 特征3. 应用4. …

批量处理PDF神器:快速转换、压缩,提升工作效率

现在PDF格式的文件流通率越来越高了&#xff0c;因为它可以完整的保存文档原有的格式而被大家所使用。但是这个格式的文档编辑对很多人来说还比较陌生。这次我介绍几款pdf软件让你实现轻松编辑。 1.福昕PDF编辑器 链接一下>>https://editor.foxitsoftware.cn 这家公司…

Dance with Compiler - EP2

今天来熟悉汇编指令。 基本指令特点 str: store value to memory ldr: load value from memory stp: store register value to stack ldp: load stack value to register 更新寄存器的操作&#xff0c;一般结果寄存器是左操作数。 写内存的操作&#xff08;str&#xff09;&…

不同工况下的迁移轴承故障诊断,融合SE注意力机制的Resnet18迁移学习,附MATLAB代码...

概要 迁移学习&#xff08;Transfer Learning&#xff09;是一种在机器学习中广泛应用的技术&#xff0c;它利用在一个任务上获得的知识来帮助解决另一个相关任务。迁移学习尤其适用于数据量有限或训练成本较高的情况。它可以显著提高模型的性能和训练效率。 本期采用MATLAB语…

新材料 金属3D打印发展的加速器

在金属3D打印的广阔舞台上&#xff0c;材料性能犹如舞台的台柱&#xff0c;直接决定了打印工件性能的优劣。从强度、硬度到耐腐蚀性、抛光性及导热性&#xff0c;每一项指标都紧密关联着材料的选择&#xff0c;而优质材料正是推动这项技术跨越边界、深入更多行业领域的核心动力…

一个vue重新回顾,好多年前写的

在校期间简单跟着视频学习的代码&#xff0c;后面上传到github仓库就一直没有使用了&#xff0c;今天重新加载&#xff0c;重新启动。下面是启动时候遇到的问题&#xff0c;主要原因是我这部电脑是新电脑&#xff0c;很多环境还没有搭建。 成功启动后的页面效果 这里采用的思…

oauth2 方式获取outlook邮箱收件箱(python)

1.在Azure 门户注册应用程序 微软文档地址 重定向的地址配置(微软地址)&#xff1a; https://login.microsoftonline.com/common/oauth2/nativeclient 注册应用地址 2.程序代码 #安装包以及需要的驱动 pip3 install playwrightplaywright install import base64 import jso…

服务器模型 Reactor 和 Proactor

Proactor 具体流程如下&#xff1a; 处理器发起异步操作&#xff0c;并关注 IO 完成事件&#xff1b;事件分离器等待操作完成事件&#xff1b;分离器等待过程中&#xff0c;内核并行执行实际的 IO 操作&#xff0c;并将结果存储入用户自定义的缓冲区&#xff0c;最后通知事件分…

零工市场小程序:自由职业者的日常工具

零工市场小程序多功能且便捷&#xff0c;提供了前所未有的灵活性和工作效率。这类小程序不仅改变了自由职业者的工作方式&#xff0c;也重塑了劳动力市场的格局。 一、零工市场小程序的特点 即时匹配&#xff1a;利用先进的数据算法&#xff0c;零工市场小程序能够快速匹配自由…

ASP.Net Core 因集成WebSocket导致Swagger UI显示错误

文章目录 前言一、ApiExplorerSettings二、解决Swagger UI显示问题 前言 Swagger UI 本身并不支持直接展示或测试 WebSocket 端点。Swagger&#xff08;现在称为 OpenAPI&#xff09;及其 UI 实现主要是为 RESTful API 设计的&#xff0c;这些 API 基于 HTTP 请求/响应模型。W…

IDEA加载工程报错Error Loading Project: Cannot load module demo.iml解决

spring boot工程由于工程名字为demo不太好&#xff0c;直接更改了这个工程的名字&#xff0c;主要操作了包括重命名项目文件夹、修改IDEA中的项目名称、模块名称、包名称、以及相关的配置文件等。 然后再打开工程&#xff0c;报错Error Loading Project: Cannot load module de…

MyBatis ——在java层面对MySQL数据库进行操作

目录 MyBatis 是一款优秀的 持久层框架&#xff0c;用于简化JDBC&#xff08;java操作数据库&#xff09;的开发&#xff1b; 使用MyBatis 查询所有用户数据的过程 Lombok是一个实用的]ava类库&#xff0c;能通过注解的形式 简化 JavaBean的代码 注解&#xff1a; 引入Myb…

Oracle之用TO_CHAR函数将日期格式转化为不带前导零的月份和日

要求&#xff1a; 1、日期格式转化成字符串格式&#xff0c;月和日前面的0需要去掉&#xff0c;如日期2024-09-06需要转化成2024-9-6&#xff1b; 2、如果用截取拼接函数写法就会复杂&#xff0c;最好用TO_CHAR函数格式化实现。 正确写法&#xff1a; SELECT TO_CHAR(SYSDAT…

使用cage工具包生成验证码

目录 1. 导入依赖2. 控制类3. 测试 1. 导入依赖 <!-- 验证码工具 --><dependency><groupId>com.github.cage</groupId><artifactId>cage</artifactId><version>1.0</version></dependency>2. 控制类 RestControl…

SD-WAN解决外贸企业网络搭建问题

在全球化浪潮下&#xff0c;外贸企业日益感受到互联网和数字化技术对业务发展的重要性。作为一种创新的网络解决方案&#xff0c;SD-WAN&#xff08;软件定义广域网&#xff09;正成为外贸企业网络升级的重要助力。本文将深入剖析SD-WAN如何有效解决外贸企业网络搭建中的关键问…

ubuntu java

1、安装&#xff1a;https://zhuanlan.zhihu.com/p/565274672 遇到 sudo kill 8544 2、然后可以正常安装 编写hello world: https://blog.csdn.net/qq_33523925/article/details/92410963 安装IDEA Linux系统安装IDEA保姆级教程_linux安装idea-CSDN博客 3、idea如何设置…