牛客.数字游戏​编辑牛客.体操队形(暴力搜索)​​​​​​​牛客.二叉树最大路径和​编辑牛客.排序子序列

news2024/10/24 19:18:06

 

目录

 

牛客.数字游戏​编辑

牛客.体操队形(暴力搜索)

牛客.二叉树最大路径和​编辑

牛客.排序子序列


牛客.数字游戏

难度不大,但是要注意,他这个快速输入与输出

import java.util.*; 
import java.io.*;
import java.util.StringTokenizer;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
    public static Read in=new Read();
    public static void main(String[] args) throws IOException {
        int q = in.nextInt();
        int k = 0;
        int[] ret = new int[q];

        for (int i = 0; i < q; i++) {
            String a = in.next();
            k = Integer.parseInt(a);
            if (k % 2 != 0) {
                char[] b = a.toCharArray();
                int p = 0;
                for (int j = 0; j < b.length; j++) {
                    if (b[j] != 0 && b[j] % 2 == 0) {
                        char t = b[j];
                        b[j] = b[b.length - 1];
                        b[b.length - 1] = t;
                        p = 1;
                        break;
                    }
                }
                if (p == 1) {
                    for (int j = 0; j < b.length; j++) {
                        out.print(b[j]);
                    }
                } else {
                    out.print(-1);
                }
                out.println("");
            } else {
               out.println(k);
            }
        }
        out.close();
    }
}
class Read{
    StringTokenizer st=new StringTokenizer("");
    BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
    String next() throws IOException{
        while(!st.hasMoreTokens()){
            st=new StringTokenizer(bf.readLine());
        }
        return st.nextToken();
    }
    int nextInt()throws IOException{
        return Integer.parseInt(next());    
    }
}

牛客.体操队形(暴力搜索)

 

 递归/dfs

画出决策树

import java.util.*;
public class Main{
    public static  int n;
    //这个数组是用来标记放的数字,不然需要new 一个数组来存储
    public static boolean[]vis=new boolean[15];
    public static int[]a=new int[15];
    public static int count=0;
    public static void dfs(int ret){
        //已经放到最后一个位置了,找到了合法情况
        if(ret==n+1)
        {
         count++;   
         return;
        }
        
        for(int i=1;i<=n;i++){
            if(vis[i]==true)continue; //第i号队员已经放过了,即 11_
            if(vis[a[i]]) return;  //不合法情况12_ _ 直接剪枝
             vis[i]=true; //相当于已经放上了i号队员
             dfs(ret+1);
             vis[i]=false;
            }
        
        }
    public static void main(String[]args){
        //如果数据很小的情况下,大概率是用递归的想法
        Scanner in=new Scanner(System.in);
        n=in.nextInt();
        for(int i=1;i<=n;i++){
            a[i]=in.nextInt();
        }
            dfs(1);
        System.out.print(count);
    }
}

牛客.二叉树最大路径和

二叉树不是dfs/就是bfs/树形dp(不明显 如同dp[root],假如是堆就成了,树形遍历主要是后序遍历,)

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 *   public TreeNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param root TreeNode类 
     * @return int整型
     */
//最后的返回结果是ret
     int ret=-1010;
    public int maxPathSum (TreeNode root) {
        dfs(root);
        return ret;
    }
    public int dfs (TreeNode root){
         if(root==null){
            return 0;
        }
        int l=Math.max(0,dfs(root.left));
        int r=Math.max(0,dfs(root.right));
//ret值,ret是其中的左树单链和+右树单链和。
        ret=Math.max(ret,root.val+l+r);
    //但是这个函数返回的确是最长单链和。  返回值不一定是必须结果
        return root.val+Math.max(l,r);    //以我为根的最大单链和
    }

}

牛客.排序子序列

看题半天没看懂啥意思,看了便题解,发现不是我想的那个意思,他的意思就是分段

然后我们需要找上升趋势的(一直取,直到它下降),(下降趋势也是一直取,直到它上升),平稳的往下一个走,看下一个什么情况

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
       int n=in.nextInt();
       int[]a=new int[n];

       for(int i=0;i<n;i++){
        a[i]=in.nextInt();
       }
       int count=0;
//采用指针
       int i=0;
      while(i<n){
//防止前面都ok。1 2 2 1 这个情况,i会剩到最后一个,这个时候,她单独一个节点需要++,否则就慢慢挪动指针, 
        if(i==n-1){
         count++;
         break;
        }
        if(a[i+1]>a[i]){
// 1 2 3 4 1 他跳出循环会count++;
       //假如发现了上升趋势,那么假如一直上升就一直++
        while(i+1<n&&a[i]<=a[i+1])i++;
            count++;
        }
        //下降趋势
        else if(a[i]>a[i+1]){
         while(i+1<n&&a[i]>=a[i+1])i++;
            count++;
        }
//2 2 2 1 这种情况就一直遍历
        else{
             while(i+1<n&&a[i]==a[i+1])i++;
        }
         i++;
      }
        
       System.out.print(count);
    }
}

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

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

相关文章

架构设计笔记-15-面向服务架构设计理论与实践

目录 知识要点 案例分析 1.微服务架构 2.微服务 3.微服务架构 4.SOA与微服务 5.基于微服务架构的系统/传统单体式系统 论文 1.论微服务架构及其应用 知识要点 服务组件体系结构&#xff08;Service Component Architecture&#xff0c;SCA&#xff09;是面向服务体系…

IT基础监控运维:监控易的深度解析与应用

在数字化转型加速的今天&#xff0c;IT系统的稳定性和高效运维成为了企业业务连续性的关键保障。IT基础监控作为运维工作的基石&#xff0c;其重要性不言而喻。本文将以监控易产品为核心&#xff0c;深入探讨IT基础监控的功能、特点及范围&#xff0c;为运维团队提供实用的参考…

销售管理之线索管理

一、线索获取&#xff1a;销售增长与市场洞察的双引擎 销售增长的基石 线索&#xff1a;销售旅程的起点&#xff1a;在销售的宏伟蓝图中&#xff0c;高质量的线索无疑是构筑成功的基石。缺乏持续、优质的线索供应&#xff0c;任何销售团队都难以跨越销售目标的重重山峦。以软…

Apktool:解包重打包工具

ApKtool是一个apk编译工具&#xff0c;能够反编译apk文件。 解包 使用命令apktool d test.apk 会在同目录下生成一个同名的文件夹 重打包 使用命令apktool b test 会在test文件夹里生成一个dist目录&#xff0c;在dist目录里有打包好的test.apk

Top6 最好的 Android 数据恢复软件免费获取

虽然在智能手机上随身携带您最喜爱的音乐收藏或珍贵的录音很方便&#xff0c;但如果您的设备出现技术问题或您不小心删除了文件&#xff0c;文件也有可能丢失。 不管文件是如何删除或丢失的&#xff0c;丢失那些珍贵的音频文件的痛苦对每个人来说都是一样的。这就是我们创建本…

鸿蒙开发之ArkUI 界面篇 三十三 Builder(封装容器)

鸿蒙开发中遇到容器相同、容器下面的子组件相同&#xff0c;就是子组件的文字不同&#xff0c;背景颜色不同&#xff0c;文字颜色不同之类&#xff0c;就可以使用Builder来封装&#xff0c;语法格式如下&#xff1a; 例如下面的界面&#xff1a; Row4个ColumImageText来实现&am…

Java初阶测试编程题目

文章目录 1.大小写转换2.斐波那契数列2.1递归解决&#xff08;不推荐&#xff09;2.2递推公式&#xff08;非递归&#xff09; 3.删除公共字符3.1题目说明3.2第一种方法3.3第二种方法 4.字符串的加法4.1题目说明4.2题目核心方法4.3题目代码解析 Java初阶测试编程题目分析与总结…

C++第六讲:STL--vector的使用及模拟实现

C第六讲&#xff1a;STL--vector的使用及模拟实现 1.vector简介2.vector的常见接口介绍2.1constructor -- 构造2.2destructor -- 析构2.3begin、end2.3.1vector和string的区别、vector<string> 2.4rbegin、rend2.5cbegin、cend2.6crbegin、crend2.7size、max_size、resiz…

C++AVL树的介绍和实现

目录 1.AVL树的概念 2.AVL树的实现 2.1AVL树的结构 2.2AVL树的插入 2.2.1AVL树插入一个值的大概过程 2.2.2平衡因子的更新 2.2.3插入节点及更新平衡因子的代码实现(暂未实现旋转逻辑) 2.3旋转 2.3.1旋转的原则 2.3.2右单旋(处理parent->_bf -2 && cur-&g…

简易入门:使用Docke 部署一个tomcat服务

简易入门&#xff1a;使用Docke 部署一个tomcat服务 # 拉取 >docker pull tomcat:9.0# 后台运行容器&#xff0c;端口映射为8080. -p 宿主机端口:容器端口 >docker run -d --name tomcat-c-01 -p 8080:8080 tomcat:9.0# 查看容器id >docker ps CONTAINER ID IMAG…

Qt-系统线程安全(63)

目录 描述 使用 线程不安全 线程安全 释放锁问题 其他的锁 条件变量和信号量 描述 多线程程序太复杂了 在C/C 和 Linux中&#xff0c;我们为了保证线程安全&#xff0c;简单的方式就是加锁 为此 Qt 也封装了自己的一套锁管理 使用 线程不安全 我们先测验一下线程不安…

七、程序流程控制

一、三种执行顺序 执行顺序说明顺序结构自上而下的执行代码分支结构根据条件&#xff0c;选择对应代码执行循环结构控制某段代码重复执行 二、分支结构 1、if 分支 根据条件&#xff08;真或假&#xff09;来决定执行某段代码if 分支有三种形式 //第一种形式 if(条件表达式…

Qt学习(一)——win10系统下Qt安装(Qt5.15.2+QtCreator5.0.3+MSVC2019)

win10平台下&#xff0c;Qt Creator 5.0.3 软件About Qt Creator界面如下&#xff1a; 其基于Qt 5.15.2 MSVC2019&#xff0c;64bit,故在用Qt4 设计师自定义控件所设计的控件能够被Qt Creator加载到&#xff0c;就要安装相应版本的Qt和MSVC。此安装便可支持win10系统下的自定义…

Java项目实战II基于Java+Spring Boot+MySQL的足球青训俱乐部管理后台系统的设计与开发(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 足球作为世…

【hot100-java】排序链表

链表题。 使用归并排序法。 一图解决。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; thi…

(刷题记录6)三数之和

三数之和 题目信息&#xff1a;题目思路(环境来自力扣OJ的C)&#xff1a;暴力枚举&#xff1a;双指针&#xff1a;在三数之和上&#xff1a;转化成的两数之和&#xff1a;两数之和小优化&#xff1a; 复杂度&#xff1a;代码和解释&#xff1a;暴力枚举&#xff1a;双指针&…

【C语言】深入理解指针(三)(上)

本篇博客将讲解以下知识&#xff1a; 1、字符指针变量 2、数组指针变量 1、字符指针变量 在指针的类型中&#xff0c;有一种指针类型为字符指针&#xff1a;char* 一般使用&#xff1a; 注意&#xff1a;%s打印字符串的时候&#xff0c;需要提供字符串首元素的起始地址。 易错…

tensorflow + pygame 手写数字识别的小游戏

起因&#xff0c; 目的: 很久之前&#xff0c;一个客户的作业&#xff0c;我帮忙写的。 今天删项目&#xff0c;觉得比较简洁&#xff0c;发出来给大家看看。 效果图: 1. 训练模型的代码 import sys import tensorflow as tf# Use MNIST handwriting dataset mnist tf.kera…

C# 中循环的应用说明

一循环的概念说明 在C#编程中&#xff0c;循环结构是一种非常重要的控制流语句&#xff0c;它允许我们重复执行一段代码&#xff0c;直到满足某个特定条件为止。C#提供了几种不同类型的循环结构&#xff0c;包括for循环、while循环、do-while循环和foreach循环。 循环语句允许…

树莓派应用--AI项目实战篇来啦-7.OpenCV脸部和眼睛检测

1. 介绍 在深度学习时代&#xff0c;人脸识别一般是利用卷积神经网络进行监督式学习&#xff0c;也就是通过让算法&#xff08;神经网络&#xff09;自己去发现规律的方式&#xff0c;创造出有用的卷积核&#xff0c;然后利用其进行寻找图片和视频中的人脸&#xff0c;而在这之…