当前位置: 首页 > news >正文

中国最新新闻大事件南宁seo推广

中国最新新闻大事件,南宁seo推广,网站优化排名服务,易企秀h5制作模板免费1、题目描述 【开心消消乐】 给定一个N行M列的二维矩阵,矩阵中每个位置的数字取值为0或1。矩阵示例如: 1100 0001 0011 1111 现需要将矩阵中所有的1进行反转为0,规则如下: 1) 当点击一个1时,该1便被反转为…

1、题目描述

【开心消消乐】
给定一个N行M列的二维矩阵,矩阵中每个位置的数字取值为0或1。矩阵示例如:
1100
0001
0011
1111
现需要将矩阵中所有的1进行反转为0,规则如下:
1) 当点击一个1时,该1便被反转为0,同时相邻的上、下、左、右,以及左上、左下、右上、右下8 个方向的1(如果存在1)均会自动反转为0;
2)进一步地,一个位置上的1被反转为0时,与其相邻的8个方向的1(如果存在1)均会自动反转为0;

按照上述规则示例中的矩阵只最少需要点击2次后,所有值均为0。请问,给定一个矩阵,最少需要点击几次后,所有数字均为0?

【输入描述】
第一行输入两个整数,分别表示矩阵的行数 N 和列数 M,取值范围均为 [1,100]。接下来 N 行表示矩阵的初始值,每行均为 M 个数,取值范围 [0,1]。

【输出描述】
输出一个整数,表示最少需要点击的次数。
【实例一】
输入:

3 3
1 0 1
0 1 0
1 0 1
输出: 1,说明:上述样例中,四个角上的1均在中间的1的相邻8个方向上,因此只需要点击一次即可。

2、解题思路

此题与【岛屿数量】题类似,可用dfs回溯遍历的方法感染矩阵的位置即将符合题意的方向的1都变成0,统计需要多少次才能将矩阵中所有的值都变成0

3、参考代码

import java.util.Scanner;/*** @Author * @Date 2023/4/25 23:57*/
public class 开心消消乐 {public static void main(String[] args) {Scanner in = new Scanner(System.in);while (in.hasNext()) {int n = in.nextInt();int m = in.nextInt();int[][] arr = new int[n][m];for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {arr[i][j] = in.nextInt();}}int res = 0;for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {if (arr[i][j] == 1) {infect(arr, i, j);res++;}}}System.out.println(res);}}public static void infect(int[][] arr, int x, int y) {if(x < 0 || y < 0 || x >= arr.length || y >= arr[0].length || arr[x][y] != 1) {return;}arr[x][y] = 0;  // 感染的过程infect(arr, x + 1, y);  // 向下infect(arr, x - 1, y);  // 向上infect(arr, x, y + 1);  // 向右infect(arr, x, y - 1);  // 向左infect(arr, x + 1, y - 1);  // 向左下infect(arr, x + 1, y + 1);  // 向右上infect(arr, x + 1, y + 1);  // 向右下infect(arr, x - 1, y + 1);  // 向左上}
}

4、相似题目

(1)岛屿数量
区别在于这题指能向四个方向感染,而【开心消消乐】能向八个方向感染

public int numIslands(char[][] grid) {int count = 0;for(int i = 0; i < grid.length; i++) {for(int j = 0; j < grid[0].length; j++) {if(grid[i][j] == '1'){infect(grid, i, j);count++;}}}return count;}private void infect(char[][] grid, int i, int j){if(i < 0 || j < 0 || i >= grid.length || j >= grid[0].length || grid[i][j] == '0') return;grid[i][j] = '0';infect(grid, i + 1, j);  // 向下infect(grid, i, j + 1);  // 向右infect(grid, i - 1, j);  // 向上infect(grid, i, j - 1);  // 向左}
http://www.ds6.com.cn/news/59558.html

相关文章:

  • 企业网站建设定制网站推广优化设计方案
  • 做网站的支付营销网站方案设计
  • 青岛响应式网站建设电商网站订烟平台
  • 杭州做网站的公司哪家好明星百度指数在线查询
  • 西宁做网站是什么黑科技引流软件是真的吗
  • 个人网站建设推广哪个网站好
  • 系网站建设工作总结线上宣传渠道
  • 奶茶店加盟网站建设seo日常优化内容是什么
  • 定制网站开发哪家强怎么做关键词排名靠前
  • 山西自助建站系统怎么用广告竞价排名
  • 岳阳网站开发公司郑州做网站的专业公司
  • 织梦网站建设百度网站首页提交入口
  • 网站流量 盈利新闻头条最新消息国家大事
  • 校园招聘网站策划书seo入门培训学多久
  • 购物网站开发教程 视频写手代写平台
  • 济南住房和城乡建设部网站网络口碑营销案例
  • 政府网站模板 红色风格seo怎么优化关键词排名
  • 做历史课件用哪个网站比较好让顾客进店的100条方法
  • 网站架构优化企业网站制作开发
  • 宁乡做网站地方百度论坛首页
  • 百度链接提交地址新河seo怎么做整站排名
  • 特效网站大全指数基金什么意思
  • 网站开发知识体系长沙百度快速优化
  • 网站页面设计招聘微商营销
  • 泉州制作网页公司sem优化技巧
  • 网站建设在哪里找在线注册网站
  • 网站建设公司怎么赚钱如何免费创建自己的网站平台
  • php律师网站源码关键词优化软件哪家好
  • 泉州找工作哪个网站好巩义网络推广
  • 单页网站怎么优化seo网站关键词快速排名