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 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.hqwc.cn/news/540939.html

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

相关文章

【数据可视化】Echarts最常用图表

个人主页 &#xff1a; zxctscl 如有转载请先通知 文章目录 1. 前言2. 准备工作3. 柱状图3.1 绘制堆积柱状图3.2 绘制标准条形图3.3 绘制瀑布图 4. 折线图4.1 绘制堆积面积图和堆积折线图4.2 绘制阶梯图 5. 饼图5.1 绘制标准饼图5.2 绘制圆环图5.2 绘制嵌套饼图5.3 绘制南丁格尔…

对称加密算法(DES、AES)

加密密钥 解密密钥 DES现在基本不再使用 3DES处理速度慢 AES通常用于移动通信系统加密以及基于SSH协议的软件

Python解释器安装

下载Python解释器 如果您从未安装过Python解释器&#xff0c;那么在编写Python代码前需要安装该解释器。什么是Python解释器呢&#xff1f; “Python解释器”就像是一个能够理解和执行Python编程语言的“翻译官”。你写的Python代码&#xff08;一系列指令&#xff09;需要有一…

【SVG】前端-不依靠第三方包怎么画连线???

如何用SVG实现连线功能 在Web开发中&#xff0c;我们经常会遇到需要在页面上绘制图形或者实现一些图形交互的场景。SVG&#xff08;Scalable Vector Graphics&#xff09;作为一种用于描述二维图形的XML标记语言&#xff0c;在这方面提供了极大的便利。本文将以一个具体的例子…

HTML案例-1.标签练习

效果 源码 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head&g…

金蝶云星空,怎么做BI数据可视化分析?

金蝶云星空是一个流程管理方面的软件&#xff0c;如果想要做BI数据可视化分析&#xff0c;还就需要一套BI方案&#xff0c;即一套奥威BI软件金蝶云星空BI方案。 奥威BI软件&#xff0c;负责提供平台和技术&#xff1b;金蝶云星空BI方案&#xff0c;则提供标准化的数据分析模型…

4款实用性前端动画特效分享(附在线演示)

分享4款非常不错的项目动画特效 其中有jQuery特效、canvas特效、CSS动画等等 下方效果图可能不是特别的生动 那么你可以点击在线预览进行查看相应的动画特效 同时也是可以下载该资源的 全屏图片视差旋转切换特效 基于anime.js制作全屏响应式的图片元素布局&#xff0c;通过左…

【直流无刷笔记1】

入门科普完整版 优势&#xff1a;转速只取决于上桥臂的占空比 反馈测量方法 无刷测速 无刷测电流

TSN交换机有望成为下一代工业网络通信核心设备

TSN即Time-Sensitive Networking&#xff0c;中文名为时间敏感网络&#xff0c;是从传统以太网网络中衍生出来的一种技术&#xff0c;是指在非确定性以太网中实现确定性最小时间延时的协议族。TSN为标准以太网增加了确定性和可靠性&#xff0c;可实现对以太网网络功能的扩展&am…

多人聊天室 (epoll - Linux网络编程)

文章目录 零、效果展示一、服务器代码二、客户端代码三、知识点1.bind() 四、改进方向五、跟练视频 零、效果展示 一个服务器作为中转站&#xff0c;多个客户端之间可以相互通信。至少需要启动两个客户端。 三个客户端互相通信 一、服务器代码 chatServer.cpp #include <…

【Android】AOSP 架构

Android 官网对 AOSP 结构图进行了更新&#xff0c;如下所示&#xff1a; Android 应用&#xff08;Android Apps&#xff09; 完全使用 Android API 开发的应用。在某些情况下&#xff0c;设备制造商可能希望预安装 Android 应用以支持设备的核心功能。 特权应用&#xff08…

交换机/路由器的存储介质-思科

交换机/路由器的存储介质-思科 本文主要介绍网络设备的存储介质组成。 RAM(random-accessmemory&#xff0c;随机访问存储器) RAM中内容断电丢失&#xff0c;主要用于运行操作系统、运行配置文件、IP 路由表:、ARP 缓存、数据包缓存区。 ROM(read-only memory&#xff0c;只…