GDPU 竞赛技能实践 天码行空 期末小测

news2024/9/23 8:13:49

1. 除法(原题)

👨‍🏫 实验二:1.简单枚举
输入正整数n,按从小到大的顺序输出所有形如abcde/fghij= n的表达式,其中a~j恰好为数字0~9的一个排列(可以有前导0),2≤n≤79。

样例输入:

62

样例输出:

79546 / 01283 = 62

💖 Main1.java

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

//文件名:Main1.java

public class Main1
{
	static int n;
	static Set<Integer> set = new HashSet<>();// 用于数字去重

	public static void main(String[] args)
	{
		Scanner sc = new Scanner(System.in);
		n = sc.nextInt();
		for (int i = 1234; i < 100000; i++)
		{
			if (repeat(i))
				continue;
			int y = cal(i);
			if (y != -1)
			{
				System.out.print(y + "/");
				System.out.printf("%05d", i);
				System.out.println(" = " + n);
			}
			set.clear();
		}
	}

	/**
	 * 
	 * @param x
	 * @return 返回 x 对应的 x*n,非法值则返回 -1
	 */
	private static int cal(int x)
	{
		int y = x * n;
		if (value(y))
			return y;
		return -1;
	}

//返回 y 是否为有效值
	private static boolean value(int y)
	{
		if (y < 10000 || y >= 100000)
			return false;
		Set<Integer> tmpSet = new HashSet<>();
		while (y != 0)
		{
			int t = y % 10;
			if (tmpSet.contains(t) || set.contains(t))
				return false;
			tmpSet.add(t);
			y /= 10;
		}
		return true;
	}

//返回 x 的每一位是否有重复的数字,有则返回 true
	private static boolean repeat(int x)
	{
		if ((x + "").length() == 4)
			x *= 10;
		while (x != 0)
		{
			int t = x % 10;
			if (set.contains(t))
			{
				set.clear();
				return true;
			}
			set.add(t);
			x /= 10;
		}
		return false;
	}
}

在这里插入图片描述

2. 求逆序对(原题)

👨‍🏫 实验七:4. 求逆序对

输入一个序列{a1, a2, a3,…, an},交换任意两个相邻元素,不超过k次。交换之后,问最少的逆序对有多少个。

序列中的一个逆序对,是指存在两个数ai和aj,有ai > aj且1≤i<j≤n。也就是说,大的数排在小的数前面。

输入:第一行是n和k,1 ≤ n ≤ 105,0 ≤ k ≤ 109;第二行包括n个整数{a1, a2, a3,…, an},0≤ ai ≤109。

输出:最少的逆序对数量。

Sample Input:

3 1
2 2 1

Sample Output:

1

💖 Main2.java

import java.util.Scanner;
 
public class Main2
{
	static int N = 100010;
	static int[] q = new int[N], tmp = new int[N];
 
	public static void main(String[] args)
	{
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int k = sc.nextInt();
		for (int i = 0; i < n; i++)
			q[i] = sc.nextInt();
		long cnt = mergeSort(0, n - 1);
		System.out.println(Math.max(0, cnt - k));
	}
 
	/**
	* @param l 区间左边界
	* @param r 区间右边界
	* @return long 类型的区间内的逆序对
	*/
	private static long mergeSort(int l, int r)
	{
		if (l >= r)
			return 0;
 
		int mid = l + r >> 1;
		long res = mergeSort(l, mid) + mergeSort(mid + 1, r);
 
		int k = 0;// 临时数组指针
		int i = l;// 左区间指针
		int j = mid + 1;// 右区间指针
		while (i <= mid && j <= r)
		{
			if (q[i] <= q[j])// 无逆序对
				tmp[k++] = q[i++];
			else
			{
				tmp[k++] = q[j++];
				res += mid - i + 1;
			}
		}
		if (i <= mid)
			tmp[k++] = q[i++];
		if (j <= r)
			tmp[k++] = q[j++];
		for (i = l, j = 0; i <= r; i++, j++)
		{
			q[i] = tmp[j];
		}
 
		return res;
	}
}

在这里插入图片描述

3. 求最大子段和(分治法)

👨‍🏫 力扣题解:53.最大子数组和

给出一个长度为 n的序列 a,选出其中连续且非空的一段使得这段和最大。

输入格式
第一行是一个整数,表示序列的长度 n。

第二行有 n 个整数,第 i 个整数表示序列的第 i个数字 ai。

输出格式
输出一行一个整数表示答案。

输入

7
2 -4 3 -1 2 -4 3

输出

4

💖 源代码

import java.util.Scanner;

public class Main3
{
	public static void main(String[] args)
	{
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] nums = new int[n];
		for (int i = 0; i < n; i++)
			nums[i] = sc.nextInt();
		int ans = maxSubArray(nums);
		System.out.println(ans);
	}

	public static int maxSubArray(int[] nums)
	{
		int len = nums.length;
		if (len == 0)
		{
			return 0;
		}
		return maxSubArraySum(nums, 0, len - 1);
	}

	private static int maxCrossingSum(int[] nums, int left, int mid, int right)
	{
		// 一定会包含 nums[mid] 这个元素
		int sum = 0;
		int leftSum = Integer.MIN_VALUE;
		// 左半边包含 nums[mid] 元素,最多可以到什么地方
		// 走到最边界,看看最值是什么
		// 计算以 mid 结尾的最大的子数组的和
		for (int i = mid; i >= left; i--)
		{
			sum += nums[i];
			if (sum > leftSum)
			{
				leftSum = sum;
			}
		}
		sum = 0;
		int rightSum = Integer.MIN_VALUE;
		// 右半边不包含 nums[mid] 元素,最多可以到什么地方
		// 计算以 mid+1 开始的最大的子数组的和
		for (int i = mid + 1; i <= right; i++)
		{
			sum += nums[i];
			if (sum > rightSum)
			{
				rightSum = sum;
			}
		}
		return leftSum + rightSum;
	}

	private static int maxSubArraySum(int[] nums, int left, int right)
	{
		if (left == right)
		{
			return nums[left];
		}
		int mid = left + (right - left) / 2;
		return max3(maxSubArraySum(nums, left, mid), maxSubArraySum(nums, mid + 1, right),
				maxCrossingSum(nums, left, mid, right));
	}

	private static int max3(int num1, int num2, int num3)
	{
		return Math.max(num1, Math.max(num2, num3));
	}
}

在这里插入图片描述

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

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

相关文章

【三家飞机制造商】

1.Boeing 波音 F-15战机 B-52轰炸机 阿帕奇攻击直升机 E-3 2 .Lockheed Martin 洛克希德马丁 F35 F22 F16 F117 C130 U2 3 Raytheon 雷神

基于微信小程序+JAVA Springboot 实现的【智慧乡村旅游服务平台】app+后台管理系统 (内附设计LW + PPT+ 源码+ 演示视频 下载)

项目名称 项目名称&#xff1a; 基于微信小程序的智慧乡村旅游服务平台的设计与实现 项目技术栈 该项目采用了以下核心技术栈&#xff1a; 后端框架/库&#xff1a; Java SSM框架数据库&#xff1a; MySQL前端技术&#xff1a; 微信开发者工具、uni-app其他技术&#xff1a…

迷宫游戏(c++)

我们来玩一个迷宫游戏&#xff0c;尝试走一下面的迷宫。 迷宫游戏 我们用一个二维的字符数组来表示前面画出的迷宫&#xff1a; S**. .... ***T 其中字符S表示起点&#xff0c;字符T表示终点&#xff0c;字符*表示墙壁&#xff0c;字符.表示平地。你需要从S出发走到T&#xf…

RALL-E: Robust Codec Language Modeling with Chain-of-Thought Prompting for TTS

demo pageDetai Xin&#xff0c; tanxu微软 & 东大 & 浙大 abstract 使用CoT的思路&#xff0c;和Valle的框架&#xff0c;先实现LLM预测音素级别pitch/duration&#xff0c;然后预测speech token。 methods Prosody tokens as chain-of-thought prompts 和Valle一…

面试前端随笔20240510

最近公司招聘前端开发人员有幸参与帮听&#xff0c;总结了三个有关vue的面试问题和答案&#xff0c;现在分享一下。 1.Vue2数据监听无法监听数组为啥&#xff1f;有啥解决方案&#xff1f;vue3中是如何处理这个问题&#xff1f; vue2的官方说明了defineProperty的一些限制&…

脉冲水路清洗机,全自动脉冲技术清除管道堵塞

邦注脉冲水路清洗机是一种高效的清洗设备&#xff0c;它利用全自动脉冲技术来清除管道内的堵塞和污垢。以下是对该设备的一些详细描述&#xff1a; 全自动脉冲技术&#xff1a;脉冲水路清洗机采用了全自动脉冲技术&#xff0c;这是一种先进的清洗方法。该技术通过产生高强度的…

3D Web轻量化引擎HOOPS Communicator如何处理DWG文件中的图纸?

在当今工程设计和建筑领域&#xff0c;数字化技术已经成为不可或缺的一部分。HOOPS Communicator作为一种强大的三维数据可视化工具&#xff0c;被广泛应用于处理各种CAD文件&#xff0c;其中包括AutoCAD的DWG格式。在这篇文章中&#xff0c;我们将探讨HOOPS Communicator是如何…

湖南大学OS-2018期末考试(不含解析)

前言 不知道哪里翻出来的一张&#xff0c;看着确实像期末考卷&#xff0c;暂且放一下。或许做过&#xff0c;或许没做过。 总之答案不记得了。做完可以评论区发一下或者找我发出来。 共6道大题。 一、(30%) 1. &#xff08;6%&#xff09; 进程间通信的两种方法分别是什么&…

GIN框架_请求参数

请求参数 1. Get请求参数 使用Get请求传参时&#xff0c;类似于这样 http://localhost:8080/user/save?id11&namezhangsan。 如何获取呢&#xff1f; 1.1 普通参数 request url: http://localhost:8080/user/save?id11&namezhangsan r.GET("/user/save&qu…

【Web】CTFSHOW 月饼杯 题解(全)

目录 web1_此夜圆 web2_故人心 web3_莫负婵娟 web1_此夜圆 拿到源码&#xff0c;一眼字符串逃逸 本地测一测&#xff0c;成功弹出计算器 <?phpclass a {public $uname;public $password;public function __wakeup(){system(calc);} }function filter($string){retur…

网络安全大神是怎么炼成的

首先&#xff0c;兴趣是最好的老师&#xff0c;如果你不感兴趣&#xff0c;建议换一个有兴趣的专业&#xff0c;其次&#xff0c;再来说说你是对信息安全感兴趣&#xff0c;想往安全方面走的&#xff0c;我这边给你一些学习建议。 首先&#xff0c;安全这方面的前景是很好的&a…

代理IP与网络隐私

随着科技的发展&#xff0c;越来越多的人开始享受网络的便利&#xff0c;人们逐步在社交媒体上分享自己的生活。这些公开信息是可以被所有人浏览观看的&#xff0c;但是也会存在部分隐私信息我们并不想要被人知晓&#xff0c;这就牵扯到网络隐私保护问题。 代理IP对于网络隐私保…

软考一年只能考一次吗?24软考各科目考试时间一览表

软考考试次数&#xff1a; 软考高级【系统分析师】及【系统架构设计师】是一年考两次的。 此外&#xff0c;软考中级【软件设计师】和【网络工程师】也是一年考两次的。 其他科目一年都只开考一次&#xff0c;或者上半年开考&#xff0c;或者下半年开考&#xff0c;具体考试…

如何通过radsystem源代码启动项目

大家有没有想过这样一个问题&#xff0c;如果别人没有下载radsystems&#xff0c;别人该如何打开我们的项目呢&#xff0c;那么今天我来介绍一下&#xff0c;如何启动radsystem源代码。 一般来说我们都是需要打开radsystems的publish部署项目 但是我们可以通过它部署后的源代码…

微信视频号开店需要多少钱?2024年最新入驻条件,商家必看!

哈喽~我是电商月月 视频号小店逐渐走入大众视野&#xff0c;观众多&#xff0c;但里面的商家却很少&#xff0c;很多想创业做电商的朋友&#xff0c;就把目光锁定到了视频号平台&#xff0c;那现在视频号小店的入驻费用肯定是新手&#xff0c;最关心的事情了&#xff01; 今天…

【R语言】ggplot中点的样式shape参数汇总

ggplot中点的样式展示&#xff1a; library(ggplot2)# 创建数据框 a<- data.frame(x 0:25, y 0:25) # 创建散点图 ggplot(a, aes(x x, y y, shape as.factor(y))) geom_point(size 4) scale_shape_manual(values 0:25) labs(shape "形状") theme(legend.…

903. 昂贵的聘礼[dijsktra堆优化版]

题目描述 年轻的探险家来到了一个印第安部落里。 在那里他和酋长的女儿相爱了&#xff0c;于是便向酋长去求亲。 酋长要他用 10000 个金币作为聘礼才答应把女儿嫁给他。 探险家拿不出这么多金币&#xff0c;便请求酋长降低要求。 酋长说&#xff1a;”嗯&#xff0c;如果你能够…

网络审计:为什么定期检查您的网络很重要

在数字化时代&#xff0c;网络安全成为组织和个人必须面对的重要挑战。网络审计是一种关键的安全措施&#xff0c;通过定期检查和评估网络系统的安全性&#xff0c;帮助发现潜在的安全漏洞和弱点&#xff0c;从而防止数据泄露和其他安全威胁。本文将介绍网络审计的重要性&#…

寄大件家具用什么物流便宜,寄沙发大件物流便宜

在现代生活中&#xff0c;搬家或重新布置家居时&#xff0c;沙发作为体积较大、价值较高的家具&#xff0c;选择一个经济实惠的物流服务至关重要。 1、对于近距离的运输&#xff0c;同城寄沙发可以找个车直接拉过去比较划算&#xff0c;省外的可以试试像我这样邮寄&#xff1b;…

docker镜像容器常用命令

常用基础命令1、docker info #查看docker版本等信息 2、docker search jenkins #搜索jenkins镜像 3、docker history nginx #查看镜像中各层内容及大小,每层对应的dockerfile中的一条指令。 4、docker network ls #显示当前主机上的所有网络 5、docker logs nginx …