java枚举与模拟方法

news/2024/7/27 9:03:34/文章来源:https://blog.csdn.net/weixin_62944148/article/details/136699544

枚举

枚举的定义

枚举算法(穷举算法),这种算法就是在解决实际问题的时候去使用所有的方式去解决这个问题,会通过推理去考虑事件发生的每一种可能性,最后推导出结果

优点 简单粗暴,他暴力的枚举所有可能,尽可能地尝试所有的方法(时间复杂度很高,通过不了,只能通过部分案例)

缺点 大部分题目使用枚举拿不到满分

枚举的技巧

1 确定解的类型

        在进行枚举之前,我们要确定解的类型是什么,如果是求满足条件的数目,那我们就枚举的每个变量,计算一共有多少个满足条件的数据。如果是满足条件区间的个数,那我们就枚举每个区间。

2  选择枚举的方法

        常见的枚举方法有直接枚举法(for )

3 判断是否满足条件

        在枚举出一个解后,我们需要判断其是否是可行解

题目解析

1  标题统计

问题描述

输入一行字符串,计算这个字符 串中有多少个字符?

注意 

字符串中可能包含大、小写英文字母、数字字符、空格和换行符。统计标题的字符数时,空格和换行符不计算在内。

解题步骤

1 确定解的类型(分析题目的结果,是合理数据的数量,还是合理区间的数量)

2 确定枚举方法(for循环,递归函数)

3 判断当前数据是否符合题意(符合题意,把数据添加到结果集中,不符合就遍历下一个数据)

4 当前枚举算法是否需要优化,怎么去优化

 

package Accommodate;import java.util.*;public class Main1 {public static void main(String[] args) {// TODO Auto-generated method stubScanner scan=new Scanner(System.in);String str=scan.nextLine();/*接受来自控制台的数据*不适用next() */int sum=0;for(int i=0;i<str.length();i++) {if(str.charAt(i)!='\n'&&str.charAt(i)!=' ') {sum++;}}System.out.print(sum);}}

 

2 计数问题

问题  计算在区间1到n的所有整数中,数字x(0<=x<=9)出现了多少次?

package Accommodate;import java.util.*;public class Main2 {public static void main(String[] args) {// TODO Auto-generated method stubScanner scan=new Scanner(System.in);int n =scan.nextInt();int x=scan.nextInt();int s=0;for(int i=1;i<=n;i++) {String  a=i+"";//当前数字强行转化为字符串for(int j=0;j<a.length();j++) {//循环遍历每个转换成字符的数字int c=a.charAt(j)-'0';/*字符转会数字str.charAt(i)是一个char型,* 减去'0',就相当于把字符转成数字*/if(c==x) {s++;}}}//当前数字是否是xSystem.out.print(s+" ");}}

 

模拟

模拟的定义

 什么是模拟?

仅仅使用较简单的算法和数据结构的题目。

模拟顾名思义,就是按照题目的要求,一步步写出代码。

特点:

模拟题目通常具有码量大,操作多、思路繁复的特点。

模拟过程

1 读题 读懂题目的意思

2 建模 利用什么样的数据结构来实现

3 代码实现 写出代码框架

4 调试、优化

例题讲解

题目 

在一个n行m列的方格图上有一个位置上有地雷,另外一些位置为空。请为每个空位置标一个整数,表示周围八个相邻的方格中有多少个地雷。

输入描述

第一行包含两个整数n,m

第二行到第n+1行每行包含m个整数,相邻整数之间用一个空格分隔

如果对应的整数为0,表示这一格没有地雷。如果对应的整数为1.表示这一格有地雷。

对于有地雷的方格,输出9

示例输入

3 4 

0 1 0 0

1 0 1 0

0 0 1 0

输出

2 9 2 1 

9 4 9 2

1 3 9 2

package Accommodate;
import java.util.*;public class Main3 {public static void main(String[] args) {// TODO Auto-generated method stubScanner scan=new Scanner(System.in);int n=scan.nextInt();int m=scan.nextInt();int[][]arr=new int [n][m];for(int i=0;i<n;i++) {for(int j=0;j<m;j++) {arr[i][j]=scan.nextInt();}}//获取数据for(int i=0;i<n;i++) {for(int j=0;j<m;j++) {//a[i][j]if(arr[i][j]==1) {System.out.print(9+" ");}else {int ans=0;//计数for(int a=i-1;a<=i+1;a++) {//九空格for(int b=j-1;b<=j+1;b++) {if(a<0||a>=n||b<0||b>=m)continue;if(arr[a][b]==1)ans++;//九空格中存在数为1的,累加他们的和}}System.out.print(ans+" ");}}System.out.println();}}}

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

XWPFDocument中XmlCursor的使用

类名&#xff1a; org.apache.xmlbeans Interface XmlCursor版本&#xff1a; 原xml代码&#xff1a; <w:p w14:paraId"143E3662" w14:textId"4167FBA7" w:rsidR"001506F2" w:rsidRPr"003F3D89" w:rsidRDefault"001506F2&qu…

Alveo 概念拓扑结构

在 Alveo 加速卡中,涉及到的概念拓扑结构主要包括 Alveo 卡上的各个关键组件以及与主机系统之间的通信结构。以下是对这些概念拓扑结构的简要介绍: 1.DDR 即双数据率内存(Double Data Rate memory),是一种常见的计算机内存类型,用于存储和提供处理器所需的数据和指令。…

Python 界面逻辑分离示例

本示例使用的发卡设备&#xff1a;https://item.taobao.com/item.htm?id615391857885&spma1z10.5-c.w4002-21818769070.11.6cc85700Robi3x 一、Python 安装PyQt5&#xff0c;运行 Qt Designer 新建窗体文件&#xff0c;在窗体中拖放控件 完成界面设计&#xff0c;保存为…

探索云原生数据库技术:构建高效可靠的云原生应用

数据库是应用开发中非常重要的组成部分&#xff0c;可以进行数据的存储和管理。随着企业业务向数字化、在线化和智能化的演进过程中&#xff0c;面对指数级递增的海量存储需求和挑战以及业务带来的更多的热点事件、突发流量的挑战&#xff0c;传统的数据库已经很难满足和响应快…

2024Python二级

1. 2. 前序遍历首先访问根节点再访问左子树和右子树 3. 4. sub不属于保留字 5. 6. 7. 8. continue是再重新开始进行循环&#xff0c;不是题目中所规定字母的话就对它进行输出 9. Python没有主函数的说法 10. 未转化为数据所要求的形式&#xff0c;应首先考虑eval 11. l…

03.axios数据提交和错误处理

一.axios常用请求方法和数据提交 1. 想要提交数据&#xff0c;先来了解什么是请求方法 请求方法是一些固定单词的英文&#xff0c;例如&#xff1a;GET&#xff0c;POST&#xff0c;PUT&#xff0c;DELETE&#xff0c;PATCH&#xff08;这些都是http协议规定的&#xff09;&am…

【数据结构高阶】图

目录 一、图的基本概念 二、 图的存储结构 2.1 邻接矩阵 2.2.1 邻接矩阵存储模式的代码实现 2.2.2 邻接矩阵存储的优缺点 2.2 邻接表 2.2.1 无向图的邻接表 2.2.2 有向图的邻接表 2.2.3 邻接表存储模式的代码实现 2.2.4 邻接表存储的优缺点 三、图的遍历 3.1 图的…

部署docker仓库harbor

1、下载包 1、包已上传有两个harbor.v2.6.0.tar与harbor.tar 2、harbor.tar解压后会生成harbor目录&#xff0c;将harbor.v2.6.0.tar移动到harbor目录下。 3、执行harbor目录下的install.sh 4、执行完后修改配置文件 2、修改配置文件 vim /root/harbor/make/ harbor.yml.tmpl …

警用移动执法远程视频监控方案:安防视频监控系统EasyCVR+4G/5G移动执法仪

一、背景需求 在现代城市管理中&#xff0c;移动执法仪视频监控方案正逐渐成为一种高效、便捷的管理工具。该方案通过结合移动执法仪和视频监控技术&#xff0c;实现了对城市管理现场的实时监控和取证&#xff0c;有效提升了城市管理水平和效率。 移动执法仪作为现场执法的重…

Linux进程概念僵尸进程孤儿进程

文章目录 一、什么是进程二、进程的状态三、Linux是如何做的&#xff1f;3.1 R状态3.2 S状态3.3 D状态3.4 T状态3.5 t状态3.6 X状态3.7 Z状态 四、僵尸进程4.1 僵尸进程危害 五、孤儿进程 一、什么是进程 对于进程理解来说&#xff0c;在Windows上是也可以观察到的&#xff0c…

全面的 DevSecOps 指南:有效保护 CI/CD 管道的关键注意事项

数字化转型时代带来了对更快、更高效、更安全的软件开发流程的需求。DevSecOps&#xff1a;一种将安全实践集成到 DevOps 流程中的理念&#xff0c;旨在将安全性嵌入到开发生命周期的每个阶段 - 从代码编写到生产中的应用程序部署。DevSecOps 的结合可以带来许多好处&#xff0…

Leetcode 1514 概率最大的路径

文章目录 1. 题目描述2. 我的尝试 1. 题目描述 原题链接&#xff1a;Leetcode 1514 概率最大的路径 给你一个由 n 个节点&#xff08;下标从 0 开始&#xff09;组成的无向加权图&#xff0c;该图由一个描述边的列表组成&#xff0c;其中 edges[i] [a, b] 表示连接节点 a 和 b…

原生php单元测试示例

下载phpunit.phar https://phpunit.de/getting-started/phpunit-9.html 官网 然后win点击这里下载 新建目录 这里目录可以作为参考&#xff0c;然后放在根目录下 新建一个示例类 <?phpdeclare(strict_types1);namespace Hjj\DesignPatterns\Creational\Hello;class He…

centos7 安装wps 依赖源libGLU.so.1()(64bit)

centos 在安装wps时会提示&#xff1a;依赖检测失败&#xff1a; libXss.so.1()(64bit)被需要 yum 或者apt安装依赖失败 手动搜索发现https://pkgs.org/download/libGLU.so.1()(64bit)可以下载。 完成验证 选择合适自己的系统&#xff0c;这里以centos7为例 进入红框所选择…

使用 mysqldump 迁移 MySQL 表 OceanBase

使用 mysqldump 迁移 MySQL 表 OceanBase 一、什么是mysqldump二、使用mysqldump导出MySQL数据三、将数据导入到OceanBase四、注意 一、什么是mysqldump mysqldump 是 MySQL 数据库管理系统中的一个工具&#xff0c;用于将数据库中的数据导出为文本文件。它可以将整个数据库、…

睿尔曼超轻量仿人机械臂之六轴机器人运动认知与实操

机械臂运动分为关节空间运动和笛卡尔空间运动2种方式&#xff0c;2种运动方式分别对应机械臂运动学算法的正解和逆解&#xff0c;在不同的应用场景下可以使用不同的运动方式。 两种运动方式之间的不同可总结为以下几点&#xff1a; ①表示方式不同。关节空间运动发给机械臂的是…

【C语言】文件操作篇-----程序文件和数据文件,文件的打开和关闭,二进制文件和文本文件,fopen,fclose【图文详解】

欢迎来CILMY23的博客喔&#xff0c;本篇为【C语言】文件操作篇-----程序文件和数据文件&#xff0c;文件的打开和关闭&#xff0c;二进制文件和文本文件【图文详解】&#xff0c;感谢观看&#xff0c;支持的可以给个一键三连&#xff0c;点赞关注收藏。 前言 在了解完动态内存管…

华为OD机考-C卷

文章目录 攀登者问题停车场最短路径 攀登者问题 24/03/09 20:50~23:10 攀登者喜欢寻找各种地图&#xff0c;并且尝试攀登到最高的山峰。地图表示为一维数组&#xff0c;数组的索引代表水平位置&#xff0c;数组的元素代表相对海拔高度。其中数组元素0代表地面。一个山脉可能有多…

处理error: remote origin already exists.及其Gitee文件上传保姆级教程

解决error: remote origin already exists.&#xff1a; 删除远程 Git 仓库 git remote rm origin 再添加远程 Git 仓库 git remote add origin &#xff08;HTTPS&#xff09; 比如这样&#xff1a; 然后再push过去就ok了 好多人可能还是不熟悉怎么将文件上传 Gitee:我…

Kotlin/Java重写equals后==表现(2)

Kotlin/Java重写equals后表现&#xff08;2&#xff09; 如果不重写默认的equals方法&#xff0c;即使用Object默认的equals()方法&#xff0c;而Object默认的equals方法&#xff0c;其实比较两个对象的地址&#xff1a; fun main(args: Array<String>) {val u1 User(&…