首页 > 编程语言 >Java蓝桥杯题目——1264排个序

Java蓝桥杯题目——1264排个序

时间:2024-03-09 10:44:55浏览次数:21  
标签:Java sc int 元素 蓝桥 ++ 数组 排个序 false

题目

 

思路:

1、输入数据

2、用冒泡排序将数组(下标为pj的)部分升序,

3、判断是否有前一个元素大于后一个元素(降序),有则返回false

注意:(1)数组p元素的取值不能大于数组a的长度,因为p元素是a的下标

(2)数组下标越界问题,使用i<a.length判断

(3)并非所有元素都要降序才返回false,只要有前一个元素大于后一个元素就返回false

 

import java.util.Arrays;
import java.util.Scanner;
public class MaoPaoDemo1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int[] a = new int[n];
        int[] p = new int[m];
        for (int i = 0; i < n; i++) {
            a[i] = sc.nextInt();
        }
        for (int i = 0; i < m; i++) {
            p[i] = sc.nextInt();
        }
        //对p进行排序(p的元素大小不可能超过a的长度)
        Arrays.sort(p);
        //只对数组a下标为p[]的元素进行升序排序,得到部分升序数组a
        for (int j = 0; j < m; j++) {
            int max = p[j]-1;
            int i = p[j];
            for (; i <= p[m - 1]&&i<a.length; i++)
                //前一个元素大于后一个元素就交换位置
                if (a[max] > a[i]) {
                    int t2 = a[max];
                    a[max] = a[i];
                    a[i] = t2;
                }

        }
        //f记录真假
        boolean f = true;
        //只要有一个元素大于后一个元素就返回false,退出循环
        for (int i = 0; i < a.length-1; i++) {
            if(a[i]>a[i+1]){ f=false;break;}
        }
        //这里是错误的,这里的条件太严格了,(此处是所有元素都降序才返回false)
//        for (int i = 0; i < n; i++) {
//            if (a[i] != arr[i]) {//若两次变换的数组有一个元素不相等,则代表true,跳出循环
//                f = true;
//                break;
//            } else {
//                f = false;
//            }
//        }
        if (f) System.out.println("YES");
        else System.out.println("NO");
    }
}

 

标签:Java,sc,int,元素,蓝桥,++,数组,排个序,false
From: https://www.cnblogs.com/qinuoqwq/p/18062372

相关文章

  • 每天一道蓝桥杯 Day2 翻转+阶乘求和
    阶乘求和 只要后9位的话,那就只考虑后9位!如何只算后9位?有一个很经典的运算:取模。回想入门c语言时做过一道题,给定三位数,要求进行数字翻转。比如给定n,n=123,要翻转成321。一个做法是令a1=n%10,a2=(n%100)/10,a3=n/100输出a1*100+a2*10+a3即可。所以遇到求一个很大的值除以某数......
  • Java ArrayList 与 LinkedList 的灵活选择
    JavaArrayListJavaArrayList类是一个可变大小的数组,位于java.util包中。创建ArrayListimportjava.util.ArrayList;ArrayList<String>cars=newArrayList<String>();//创建一个ArrayList对象添加元素cars.add("Volvo");cars.add("BMW");cars.add(......
  • java实现浏览器下载附件时文件名中文乱码解决方案
    方案一:URLEncoder解决IE和谷歌浏览器的附件中文名问题。如果客户端浏览器是IE浏览器或者是谷歌浏览器。我们需要使用URLEncoder类先对中文名进行UTF-8的编码操作。因为IE浏览器和谷歌浏览器收到含有编码后的字符串后会以UTF-8字符集进行解码显示。//把中文名......
  • Java核心之细说泛型
    泛型是什么?等你使用java逐渐深入以后会了解或逐步使用到Java泛型。Java中的泛型是JDK5中引入的功能之一。"Java泛型"是一个技术术语,表示一组与定义和使用泛型类型和方法有关的语言特性。在Java中,泛型类型或方法与普通类型和方法的区别在于它们具有类型参数。入门如果仔......
  • java17新特性简单介绍
    前言本项目使用的IDE为IDEA2023.3.3(社区版)。文本块java17之前的写法,双引号需要转义,换行需要\n,需要加号拼接publicclassTestString{publicstaticvoidmain(String[]args){Stringjson="{\n"+"\"id\":\"1\",\n&qu......
  • Java登陆第三十二天——ES6(一)let、const、模板字符串、解构表达式、箭头函数
    所谓ECMAScript6也就是JS6。这次更新带来了大量的新特性,使JS代码更简洁,更强大。复习JS请走:JS入门JS6文档请走:JS6菜鸟教程ES6新增了let和const关键字,用作声明变量let相较于var,let声明的变量更规范。ES6更推荐使用let。let不可重复声明let可以作为成员变量:(let遇见非函数......
  • P8630 [蓝桥杯 2015 国 B] 密文搜索
    网站:https://www.luogu.com.cn/problem/P8630代码如下:主要是用了map的思想#include<iostream>#include<vector>#include<algorithm>#include<math.h>#include<string>#include<string.h>#include<iomanip>#include<map>#incl......
  • 熟悉又陌生的JavaWeb 第3天
    传送门Servlet编程第2天的开头部分已经看过Servlet这里再介绍一下注解方式,可以不用配置web.xml使用注解的前提是web.xml的version是4.0(3.0以上应该就行)@WebServlet(name="MyNewServlet",value="/MyNewServlet")publicclassMyNewServletextendsHttpServlet{......
  • JAVA基础--方法
    方法的定义(函数)注意:Java都是值传递语法:修饰符返回值类型方法名(参数类型参数名){...方法体...return返回值;}例子:定义一个求两数最大值的方法publicclassDemo01{publicstaticvoidmain(String[]args){intmax=Max(10,20......
  • JAVA基础--命令行传参
    命令行传参有时希望运行一个程序时再传递给它消息,这需要靠传递命令行参数给main()函数来实现编写以下代码publicclassDemo02{publicstaticvoidmain(String[]args){//args.length数组长度for(inti=0;i<args.length;i++){......