编程:序列交换、数字圆环、小易的英语软件

2024-02-17 02:48

本文主要是介绍编程:序列交换、数字圆环、小易的英语软件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

序列交换

题目

小易给你一个包含n个数字的数组a1,a2,…,a3。你可以对这个数组执行任意次以下交换操作: 对于数组中的两个下标i,j(1<=i,j<=n),如果ai+aj为奇数,就可以交换ai和aj。

现在允许你使用操作次数不限,小易希望你能求出在所有能通过若干次操作可以得到的数组中,字典序最小的一个是什么。

思路:只要不全是奇数或者全是偶数,就进行排序

代码:

import java.util.Arrays;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);while (scanner.hasNext()) {int n = scanner.nextInt();long[] arr = new long[n];for (int i = 0; i < n; i++) {arr[i] = scanner.nextLong();}demo1(arr);return;}}public static void demo1(long[] arr) {//奇数数量int oddSum = 0;for (int i = 0; i < arr.length; i++) {if (arr[i] % 2 == 1) {oddSum++;}}//如果全是偶数或者全是奇数则无法排序,直接输出if (oddSum == 0 || oddSum == arr.length) {for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + " ");}return;}//如果至少存在一对奇偶数,则可以将序列全部从小到大排列Arrays.sort(arr);for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + " ");}}
}

数字圆环

题目:小易有一个长度为n的数字数组a1a_1a1, a2a_2a2, …, ana_nan。

问你是否能用这n个数字构成一个环(首尾连接),使得环中的每一个数字都小于它相邻的两个数字的和(每个数字都必须使用并且每个数字只能使用一次)。

思路:

因为每个数字小于相邻只和,

  1. 直接排序数组,
  2. 然后只要操作最大数大于次大数与次次大数的和,
  3. 此时只需要将最大数和第二大数交换位置即可。
import java.util.Arrays;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner cin = new Scanner(System.in);int t = cin.nextInt();while (t-- != 0) {int n = cin.nextInt();long[] a = new long[n];for (int i = 0; i < n; i++) {a[i] = cin.nextLong();}Arrays.sort(a);if (a[n-2] + a[n-3] > a[n-1]){ //只要只要最后二个和第一个加起来大于最后一个//可以考虑将最后一个往前交换一位,这样都能满足条件System.out.println("YES");}else {System.out.println("NO");}}
}

小易的英语软件

题目:小易是班级的英语课代表, 他开发了一款软件开处理他的工作。
小易的软件有一个神奇的功能,能够通过一个百分数来反应你的成绩在班上的位置。“成绩超过班级 …% 的同学”。
设这个百分数为 p,考了 s 分,则可以通过以下式子计算得出 p:
p = ( 分数不超过 s 的人数 - 1) ÷\div÷ 班级总人数 ×100%\times 100%×100%
突然一天的英语考试之后,软件突然罢工了,这可忙坏了小易。成绩输入这些对于字写得又快又好的小易当然没有问题,但是计算这些百分数……这庞大的数据量吓坏了他。
于是他来找到你,希望他编一个程序模拟这个软件:给出班级人数 n,以及每个人的成绩,请求出某几位同学的百分数。

代码

import java.util.Scanner;public class Two {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int num=sc.nextInt();int[] arr=new int[num+1];for(int i=1;i<arr.length;i++){arr[i]=sc.nextInt();}int n=sc.nextInt();//int[] a=new int[n];for(int i=0;i<n;i++){int index=sc.nextInt();//int count=func(arr,index)-1;double ans=func(arr,index) * 1.0 / num * 100;//System.out.printf("%.6f",ans);System.out.println(String.format("%.6f",ans));//System.out.println();}}private static int func(int[] arr, int nextInt) {int ount=0;for(int i=1;i<arr.length;i++){if(arr[i]<=arr[nextInt])ount++;}return --ount;}
}

这篇关于编程:序列交换、数字圆环、小易的英语软件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/716453

相关文章

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

关于最长递增子序列问题概述

《关于最长递增子序列问题概述》本文详细介绍了最长递增子序列问题的定义及两种优化解法:贪心+二分查找和动态规划+状态压缩,贪心+二分查找时间复杂度为O(nlogn),通过维护一个有序的“尾巴”数组来高效... 一、最长递增子序列问题概述1. 问题定义给定一个整数序列,例如 nums = [10, 9, 2

Java数字转换工具类NumberUtil的使用

《Java数字转换工具类NumberUtil的使用》NumberUtil是一个功能强大的Java工具类,用于处理数字的各种操作,包括数值运算、格式化、随机数生成和数值判断,下面就来介绍一下Number... 目录一、NumberUtil类概述二、主要功能介绍1. 数值运算2. 格式化3. 数值判断4. 随机

C#多线程编程中导致死锁的常见陷阱和避免方法

《C#多线程编程中导致死锁的常见陷阱和避免方法》在C#多线程编程中,死锁(Deadlock)是一种常见的、令人头疼的错误,死锁通常发生在多个线程试图获取多个资源的锁时,导致相互等待对方释放资源,最终形... 目录引言1. 什么是死锁?死锁的典型条件:2. 导致死锁的常见原因2.1 锁的顺序问题错误示例:不同

PyCharm接入DeepSeek实现AI编程的操作流程

《PyCharm接入DeepSeek实现AI编程的操作流程》DeepSeek是一家专注于人工智能技术研发的公司,致力于开发高性能、低成本的AI模型,接下来,我们把DeepSeek接入到PyCharm中... 目录引言效果演示创建API key在PyCharm中下载Continue插件配置Continue引言

Ubuntu 怎么启用 Universe 和 Multiverse 软件源?

《Ubuntu怎么启用Universe和Multiverse软件源?》在Ubuntu中,软件源是用于获取和安装软件的服务器,通过设置和管理软件源,您可以确保系统能够从可靠的来源获取最新的软件... Ubuntu 是一款广受认可且声誉良好的开源操作系统,允许用户通过其庞大的软件包来定制和增强计算体验。这些软件

C#反射编程之GetConstructor()方法解读

《C#反射编程之GetConstructor()方法解读》C#中Type类的GetConstructor()方法用于获取指定类型的构造函数,该方法有多个重载版本,可以根据不同的参数获取不同特性的构造函... 目录C# GetConstructor()方法有4个重载以GetConstructor(Type[]

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal