2013省赛---剪格子(递归深度搜索,)

2024-02-18 09:08

本文主要是介绍2013省赛---剪格子(递归深度搜索,),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

import java.util.Scanner;public class TestOne {static int[][] g;//输入的表格private static int n;//n行private static int m;//m列private static int minStep = Integer.MAX_VALUE; //存储最小格子数private static int total;//表格中的数据总和static int[][] vis;//访问标记。以访问的格子标记为1public static void main(String[] args) {Scanner sc = new Scanner(System.in);//1.输入行、列数(注意先输入列m)m = sc.nextInt();n = sc.nextInt();//2.输入表格中的数据g = new int[n][m];vis = new int[n][m];for(int i=0;i<n;i++) {for(int j=0;j<m;j++) {g[i][j] = sc.nextInt();//vis[i][j] = 0;total+=g[i][j];}}//3.对表格进行深度搜索,寻找满足条件的最少格子数dfs(0,0,0,0); //0行0列,已走格子数0,已走格子的累加和0//4.输出最小的步数System.out.println(minStep);}/*(1)对表格中的数据进行深度搜索*  (i,j):开始访问的格子坐标*  step:当前已访问的格子数目*  sum:当前已访问的格子累加和* */private static void dfs(int i, int j, int step, int sum) {//1. i、j越界 或者 当前格子已访问 (不合法)if(i<0 || i==n ||j<0 || j==m || vis[i][j]==1) return;//2. 已将表格划分为元素和相等的两部分if(sum==total/2) {minStep = Math.min(minStep, step);return;}//3. 超过总元素和一半 (不合法)if(sum>total/2) { return;}vis[i][j] = 1; //访问g[i][j]dfs(i-1,j,step+1,sum+g[i][j]);//上dfs(i+1,j,step+1,sum+g[i][j]);//下dfs(i,j-1,step+1,sum+g[i][j]);//左dfs(i,j+1,step+1,sum+g[i][j]);//右vis[i][j] = 0; //回溯}}

这篇关于2013省赛---剪格子(递归深度搜索,)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Redis中高并发读写性能的深度解析与优化

《Redis中高并发读写性能的深度解析与优化》Redis作为一款高性能的内存数据库,广泛应用于缓存、消息队列、实时统计等场景,本文将深入探讨Redis的读写并发能力,感兴趣的小伙伴可以了解下... 目录引言一、Redis 并发能力概述1.1 Redis 的读写性能1.2 影响 Redis 并发能力的因素二、

Jackson库进行JSON 序列化时遇到了无限递归(Infinite Recursion)的问题及解决方案

《Jackson库进行JSON序列化时遇到了无限递归(InfiniteRecursion)的问题及解决方案》使用Jackson库进行JSON序列化时遇到了无限递归(InfiniteRecursi... 目录解决方案‌1. 使用 @jsonIgnore 忽略一个方向的引用2. 使用 @JsonManagedR

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

Python使用DeepSeek进行联网搜索功能详解

《Python使用DeepSeek进行联网搜索功能详解》Python作为一种非常流行的编程语言,结合DeepSeek这一高性能的深度学习工具包,可以方便地处理各种深度学习任务,本文将介绍一下如何使用P... 目录一、环境准备与依赖安装二、DeepSeek简介三、联网搜索与数据集准备四、实践示例:图像分类1.

Redis 内存淘汰策略深度解析(最新推荐)

《Redis内存淘汰策略深度解析(最新推荐)》本文详细探讨了Redis的内存淘汰策略、实现原理、适用场景及最佳实践,介绍了八种内存淘汰策略,包括noeviction、LRU、LFU、TTL、Rand... 目录一、 内存淘汰策略概述二、内存淘汰策略详解2.1 ​noeviction(不淘汰)​2.2 ​LR

Python与DeepSeek的深度融合实战

《Python与DeepSeek的深度融合实战》Python作为最受欢迎的编程语言之一,以其简洁易读的语法、丰富的库和广泛的应用场景,成为了无数开发者的首选,而DeepSeek,作为人工智能领域的新星... 目录一、python与DeepSeek的结合优势二、模型训练1. 数据准备2. 模型架构与参数设置3

Rust中的BoxT之堆上的数据与递归类型详解

《Rust中的BoxT之堆上的数据与递归类型详解》本文介绍了Rust中的BoxT类型,包括其在堆与栈之间的内存分配,性能优势,以及如何利用BoxT来实现递归类型和处理大小未知类型,通过BoxT,Rus... 目录1. Box<T> 的基础知识1.1 堆与栈的分工1.2 性能优势2.1 递归类型的问题2.2