java枚举与模拟方法

枚举

枚举的定义

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

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

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

枚举的技巧

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 stub
		Scanner 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 stub
		Scanner 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++;
				}
			}
		}//当前数字是否是x
		System.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 stub
		Scanner 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();
		}
	}

}

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

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

相关文章

[ROS 系列学习教程] rosbag C++ API

ROS 系列学习教程(总目录) 本文目录 一、rosbag::Bag1.1 常用接口1.2 其他接口 二、rosbag::View2.1 常用接口2.1.1 代码示例 rosbag 的 C API 主要有两个类&#xff0c;用于写bag文件的Bag类&#xff0c;和用于读bag文件的View类。 一、rosbag::Bag 用于写bag文件。 头文件…

变量直接赋值、浅拷贝、深拷贝、递归、异常

对象拷贝(对象存在堆中) 变量直接赋值 赋值 就是一个&#xff0c;比如let obj2obj1 这就是赋值&#xff0c;只是把栈中存储的值&#xff0c;赋值给另一个变量 把obj1在栈中的地址&#xff0c;赋值给obj2 <script>let str hellolet str2 str //把str的值,赋值给str2.也…

Linux系统Docker部署Plik系统结合内网穿透实现公网访问本地文件

文章目录 1. Docker部署Plik2. 本地访问Plik3. Linux安装Cpolar4. 配置Plik公网地址5. 远程访问Plik6. 固定Plik公网地址7. 固定地址访问Plik 本文介绍如何使用Linux docker方式快速安装Plik并且结合Cpolar内网穿透工具实现远程访问&#xff0c;实现随时随地在任意设备上传或者…

HarmonyOS NEXT应用开发之深色模式适配

介绍 本示例介绍在开发应用以适应深色模式时&#xff0c;对于深色和浅色模式的适配方案&#xff0c;采取了多种策略如下&#xff1a; 固定属性适配&#xff1a;对于部分组件的颜色属性&#xff0c;如背景色或字体颜色&#xff0c;若保持不变&#xff0c;可直接设定固定色值或…

企业微信如何接入第三方应用?

1.登录企业微信管理后台&#xff1a;https://work.weixin.qq.com/wework_admin​​​​​ 2.点击创建应用&#xff1b; ​​​​​​​ 3. 此时可以看到已经创建好的应用&#xff0c;并且生成应用的唯一id&#xff08;agentId&#xff09; 4. 第三方应用申请域名 (举例&…

通过OceanBase 3.x中not in无法走hash连接的变化,来看OB优化器的发展

作者简介&#xff1a; 张瑞远&#xff0c;曾从事银行、证券数仓设计、开发、优化类工作&#xff0c;现主要从事电信级IT系统及数据库的规划设计、架构设计、运维实施、运维服务、故障处理、性能优化等工作。 持有Orale OCM,MySQL OCP及国产代表数据库认证。 获得的专业技能与认…

卷径计算(膜厚叠加+数值积分器应用博途PLC SCL代码)

VN积分法卷径计算的其它方法,可以参考下面文章链接: 1、VN积分法卷径计算FB https://rxxw-control.blog.csdn.net/article/details/131612206https://rxxw-control.blog.csdn.net/article/details/1316122062、PLC数值积分器 https://rxxw-control.blog.csdn.net/article/…

【刷题训练】LeetCode:557. 反转字符串中的单词 III

557. 反转字符串中的单词 III 题目要求 示例 1&#xff1a; 输入&#xff1a;s “Let’s take LeetCode contest” 输出&#xff1a;“s’teL ekat edoCteeL tsetnoc” 示例 2: 输入&#xff1a; s “Mr Ding” 输出&#xff1a;“rM gniD” 思路&#xff1a; 第一步&am…

Cassandra 集群安装部署

文章目录 一、概述1.官方文档2. 克隆服务器3.安装说明4.安装准备4.1.安装 JDK 114.2.安装 Python4.3.下载文件 二、安装部署1.配置 Cassandra2.启动 Cassandra3.关闭Cassandra4.查看状态5.客户端连接服务器6.服务运行脚本 开源中间件 # Cassandrahttps://iothub.org.cn/docs/m…

TikTok新手如何起号?环境因素与内容创新技巧

相信很多刚入行的TikTok玩家都遇到过一个难题&#xff0c;那就是账号权重低&#xff0c;播放量在个位数徘徊&#xff0c;其实都是因为还没起号&#xff01;那么具体如何起号呢&#xff1f;下面小编也给大家分享一下技巧。 一、如何起号 1、明确注册 TikTok 账号的目的 无论是…

嵌入式3-14

1、整理思维导图 2、重写链表的代码 3、实现链表&#xff0c;按值查找返回位置的功能&#xff0c;按位置查找返回值&#xff0c;释放单链表&#xff0c;链表逆置 node_p create_link_list()//创建头结点 { node_p p(node_p)malloc(sizeof(node)); if(pNULL) { …

python中的常用模块

os和sys模块 os和sys是Python标准库中两个非常重要的模块&#xff0c;它们提供了丰富的方法来与Python解释器以及操作系统交互。 os模块 os模块提供了许多函数&#xff0c;用于处理文件和目录等操作系统任务&#xff0c;如路径管理、执行命令、获取进程信息等。 常用方法&a…

计算机网络-第7章 网络安全(1)

主要内容&#xff1a;安全威胁与问题、对称密钥密码体制和公钥密码体制、数字签名与鉴别、网络层和运输层安全协议、应用层电子邮件、系统安全&#xff1a;防火墙与入侵检测 当网络中的用户都来自社会各个阶层和部门时&#xff0c;网络中存储和传输的数据需要保护。 7.1 网络安…

【python开发】并发编程(上)

并发编程&#xff08;上&#xff09; 一、进程和线程&#xff08;一&#xff09;多线程&#xff08;二&#xff09;多进程&#xff08;三&#xff09;GIL锁 二、多线程开发&#xff08;一&#xff09;t.start()&#xff08;二&#xff09;t.join()&#xff08;三&#xff09;t.…

深入了解栈和队列

小伙伴们&#xff0c;今天我们来继续学习数据结构的第二部分内容&#xff0c;就是栈和队列了。那么栈和队列有什么用呢&#xff1f; 栈和队列是两种重要的线性结构。从数据结构的角度看&#xff0c;栈和队列也是线性表&#xff0c;其特殊性在于栈和队列的基本操作是线性表操作…

Linux系统部署Swagger Editor结合内网穿透实现公网管理本地接口文档

文章目录 Swagger Editor本地接口文档公网远程访问1. 部署Swagger Editor2. Linux安装Cpolar3. 配置Swagger Editor公网地址4. 远程访问Swagger Editor5. 固定Swagger Editor公网地址 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 人工智能学习网站&#xf…

数据结构:图的存储与遍历(待续)

图&#xff08;Graph&#xff09;是一种较线性表和树更为复杂的非线性结构。在图结构中&#xff0c;对结点&#xff08;图中常称为顶点&#xff09;的前驱和后继个数不加限制&#xff0c; 即结点之间的关系是任意的。 一、基本概念和一般结论 因为一条边关联两个顶点&#xff0…

计算机服务器中了devos勒索病毒怎么解密,devos勒索病毒解密工具流程

随着网络技术的不断发展与更新&#xff0c;越来越多的企业利用网络开展了各项工作业务&#xff0c;网络也为企业提供了极大便利&#xff0c;大大提高了办公效率。但网络是一把双刃剑&#xff0c;企业的数据安全问题一直是企业关心的主要话题&#xff0c;近日&#xff0c;云天数…

如何在Windows搭建WebDav服务,并外网可访问

目录 1. 安装IIS必要WebDav组件 2. 客户端测试 3. 使用cpolar内网穿透&#xff0c;将WebDav服务暴露在公网 3.1 打开Web-UI管理界面 3.2 创建隧道 3.3 查看在线隧道列表 4. 公网远程访问 4.1 浏览器访问测试 4.2 映射本地盘符访问 4.3 安装Raidrive客户端 总结&…

由世界第一个AI软件工程师Devin引发的热潮背后----程序员到底会不会被代替?AI发展至如今是否初衷已变?

目录 一.Devin的登场是突破也是导火索 二.Devin的"逆天"能力 1、端到端构建和部署程序 2、自主查找并修复bug 3、训练和微调自己的AI模型 4、修复开源库 5、成熟的生产库也能做贡献 6、学习能力 三.Devin的出现甚至整个AI领域的进步,编程还有未来吗? 1.业…