不同路径数

希望这篇题解对你有用,麻烦动动手指点个赞或关注,感谢您的关注~

不清楚蓝桥杯考什么的点点下方👇

考点秘籍

想背纯享模版的伙伴们点点下方👇

蓝桥杯省一你一定不能错过的模板大全(第一期)

蓝桥杯省一你一定不能错过的模板大全(第二期)

蓝桥杯省一你一定不能错过的模板大全(第三期)

蓝桥杯省一你一定不能错过的模板大全(第四期)!!!

想背注释模版的伙伴们点点下方👇

蓝桥杯必背第一期

蓝桥杯必背第二期

往期精彩回顾

蓝桥杯上岸每日N题 第一期(一)!!!

蓝桥杯上岸每日N题第一期(二)!!!

蓝桥杯上岸每日N题第一期(三)!!!

蓝桥杯上岸每日N题第二期(一)!!!

蓝桥杯上岸每日N题第三期(一)!!!

蓝桥杯上岸每日N题 第四期(最少刷题数)!!!

蓝桥杯上岸每日N题 第五期(山)!!!

蓝桥杯上岸每日N题 第六期(求阶乘)!!!

蓝桥杯上岸每日N题 第七期(小猫爬山)!!!

蓝桥杯上岸每日N题 第八期 (全球变暖)!!!

操作系统期末题库 第九期(完结)

LeetCode Hot100 刷题(第三期)

idea创建SpringBoot项目报错解决方案

数据库SQL语句(期末冲刺)

想看JavaB组填空题的伙伴们点点下方 👇

填空题

竞赛干货

算法竞赛字符串常用操作大全

蓝桥杯上岸必刷!!!(模拟/枚举专题)

蓝桥杯上岸必背!!! (第三期 DP)

蓝桥杯上岸必背!!!(第四期DFS)

蓝桥杯上岸必背!!!(第五期BFS)

蓝桥杯上岸必背!!!(第六期树与图的遍历)

蓝桥杯上岸必背!!!(第七期 最短路算法)

蓝桥杯上岸必背!!!(第八期 简单数论)

蓝桥杯上岸必刷!!!(进制、数位专题)

蓝桥杯上岸考点清单 (冲刺版)!!!

分析

不同路径数

在这里插入图片描述

关键句:走过的位置可以重复走
看到题目,我们可以发现每个任意的位置都可以往上下左右四个方向任意走。
再看到输出样例,发现走了k次后,得到的是不重复的k位组合数(k从0开始)
我们可以建立如下暴力搜索树
在这里插入图片描述

我们可以暴力搜索每个位置,每个位置都往上下左右方向k步即可。
再将走了k步的数字保存到set中,这样我们得到的是不重不漏的组合数
再把输出set.size()即可。

时间复杂度

n,m,k最大都为5
554^k*10=256000=O(2 x10^5)
是可以过的,可以不用快读快写,但是像BFS、DFS这些题目比赛时快读快写比较稳

小结

DFS通常与递归结合使用,从某个起点出发,限制操作次数
走到终点时进行相应的记录或者操作
一条路走到黑,暴力枚举结合递归各个方向或者操作。
像本题:
dfs(int x,int y,int u,int sum);
注:通常从起点0开始
满足条件的再递归下一层(下一个点)
dfs(x, y,u+1, sum);

ACcode(下标从0开始推荐)

//暴搜--->递归搜索树
//往上下左右四个方向走
import java.util.*;
public class Main{static int N=10;static int arr[][]=new int [N][N];static int dx[]={0,1,-1,0};static int dy[]={1,0,0,-1};static int n,m,k;static Set<Integer>set=new HashSet<>();//存的是每次走过的距离//不出现重复的距离public static void main(String []args){Scanner in =new Scanner(System.in);n=in.nextInt();m=in.nextInt();k=in.nextInt();for(int i=0;i<n;i++){for(int j=0;j<m;j++){arr[i][j]=in.nextInt();//bfs(i,j,0,arr[i][j]);}}for(int i=0;i<n;i++){for(int j=0;j<m;j++){bfs(i,j,0,arr[i][j]);//从i ,j 出发,u标记走的步数}}System.out.println(set.size());}public static void dfs(int x,int y,int u,int num){//确定边界if(u==k)set.add(num);else{//直接暴搜,四个方向都走一便,u走到k时将走过的距离存进set中。for(int i=0;i<4;i++){int a=x+dx[i];int b=y+dy[i];if(a>=0&&a<n&&b>=0&&b<m){//在范围内都可以走//秦九韶算法dfs(a,b,u+1,num*10+arr[a][b]);}}//return set.size(); }
}
}

Accode2(下标从1开始)

import java.util.*;
public class Main{static int N=10;static int n,m,k;static int arr[][]=new int [N][N];static int dx[]={0,0,-1,0,1};static int dy[]={0,1,0,-1,0};static Set<Integer>set=new HashSet<>();public static void main(String []args){Scanner in = new Scanner(System.in);n=in.nextInt();m=in.nextInt();k=in.nextInt();for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){arr[i][j]=in.nextInt();}}int u=1;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){dfs(i,j,1,arr[i][j]);}}System.out.println(set.size());}public static void dfs(int x,int y,int u,int num){if(u==k+1)set.add(num);else{for(int i=1;i<=4;i++){int a=x+dx[i];int b=y+dy[i];if(a>=1&&a<=n&&b>=1&&b<=m){dfs(a,b,u+1,10*num+arr[a][b]);}}}}
}

快读快写版

import java.util.*;
import java.io.*;
public class Main{static int N=10;static int n,m,k;static int arr[][]=new int [N][N];static int dx[]={0,-1,0,1};static int dy[]={1,0,-1,0};static Set<Integer>set=new HashSet<>();public static void main(String []args)throws IOException{// Scanner in = new Scanner(System.in);BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));PrintWriter pw=new PrintWriter(new OutputStreamWriter(System.out));String str[]=bf.readLine().split(" ");n=Integer.parseInt(str[0]);m=Integer.parseInt(str[1]);k=Integer.parseInt(str[2]);for(int i=0;i<n;i++){String s[]=bf.readLine().split(" ");for(int j=0;j<m;j++){arr[i][j]=Integer.parseInt(s[j]);}}int u=0;for(int i=0;i<n;i++){for(int j=0;j<m;j++){dfs(i,j,0,arr[i][j]);}}pw.println(set.size());pw.flush();}public static void dfs(int x,int y,int u,int num){if(u==k)set.add(num);else{for(int i=0;i<4;i++){int a=x+dx[i];int b=y+dy[i];if(a>=0&&a<n&&b>=0&&b<m){dfs(a,b,u+1,10*num+arr[a][b]);}}}}
}

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

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

相关文章

FFmpeg常见命令行(五):FFmpeg滤镜使用

前言 在Android音视频开发中&#xff0c;网上知识点过于零碎&#xff0c;自学起来难度非常大&#xff0c;不过音视频大牛Jhuster提出了《Android 音视频从入门到提高 - 任务列表》&#xff0c;结合我自己的工作学习经历&#xff0c;我准备写一个音视频系列blog。本文是音视频系…

Gopeed-全平台开源高速下载器 支持(HTTP、BitTorrent、Magnet)协议

一、软件介绍 Gopeed&#xff08;全称 Go Speed&#xff09;&#xff0c;是一款由GolangFlutter开发的高速下载器&#xff0c;开源、轻量、原生&#xff0c;支持&#xff08;HTTP、BitTorrent、Magnet 等&#xff09;协议下载&#xff0c;并且支持全平台使用&#xff0c;底层使…

Zookeeper特性与节点数据类型详解

CAP&Base理论 CAP理论 cap理论是指对于一个分布式计算系统来说&#xff0c;不可能满足以下三点: 一致性 &#xff1a; 在分布式环境中&#xff0c;一致性是指数据在多个副本之间是否能够保持一致的 特性&#xff0c;等同于所有节点访问同一份最新的数据副本。在一致性的需…

面试热题(三数之和)

给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 输入&…

通过控制ros节点的启停,软实现人工控制和紧急停止功能的图示

通过控制ros节点的启停&#xff0c;软实现人工控制和紧急停止功能的图示 实现原理简介&#xff1a; 人工控制的节点&#xff1a; 键盘节点 方向盘节点 自动控制的节点&#xff1a; movebase 导航 autoware 等 底盘节点&#xff1a; 差速底盘 阿克曼底盘 控制节点&#xff1…

RocketMQ使用

说明&#xff1a;本文介绍RocketMQ的消费模式&消息类型&#xff0c;RocketMQ的安装参考及简单使用&#xff0c;参考&#xff1a;http://t.csdn.cn/BKFPj 消费模式 RocketMQ与RabbitMQ最大的区别在于&#xff0c;RocketMQ是根据消息的Topic锁定消费者的&#xff0c;Topic属…

什么是BitTorrent协议?

BitTorrent 是一个 P2P (Peer-to-Peer) 通信协议&#xff0c;它设计用于分发数据和电子文件在互联网上。BitTorrent 是目前世界上最流行的 P2P 文件共享协议之一&#xff0c;以下是对 BitTorrent 协议的详细解释&#xff1a; 种子和对等体&#xff1a; 种子&#xff08;Torrent…

Centos7.9安装lrzsz进行文件传输---Linux工作笔记059

这里咱们lrzsz命令,需要用来进行文件传输,因为如果不安装这个命令的话,那么 传输安装包什么的就不方便因为只有少数传输工具,才支持,直接拖拽的.没有的时候就可以用这个工具,用命令来传输 直接就是: sz 文件名 就可以把文件下载下来 rz 选择一个文件, 就可以把文件上传到当…

dingding机器人

“自定义机器人”只支持消息发送&#xff0c;自动回复需要“企业内部机器人” 消息发送 import requests import jsonres requests.post(https://oapi.dingtalk.com/robot/send?access_token036a339axxx,data json.dumps({"text": {"content":"h…

LVS-DR模式集群构建过程演示

一、工作原理 LVS的工作原理 1.当用户向负载均衡调度器&#xff08;Director Server&#xff09;发起请求&#xff0c;调度器将请求发往至内核空间 2.PREROUTING链首先会接收到用户请求&#xff0c;判断目标IP确定是本机IP&#xff0c;将数据包发往INPUT链 3.IPVS是工作在IN…

图像多目标跟踪

目标跟踪&#xff08;Object Tracking&#xff09;是自动驾驶中常见的任务&#xff0c;根据跟踪目标数量的不同&#xff0c;目标跟踪可分为&#xff1a; 单目标跟踪&#xff08;Single Object Tracking&#xff0c;SOT&#xff09;多目标跟踪&#xff08;Multi-Objects Tracki…

Ubuntu18.04版本安装ROS及出现错误的处理方法

前面的文章是在已安装的ROS基础上做的一些应用&#xff0c;这里我们从零开始安装ROS机器人操作系统。 机器人操作系统(Robot Operating System,ROS)是一个开发机器人软件的框架&#xff0c;里面包含了一系列的工具&#xff0c;库和惯例&#xff0c;目的在于简化在大量不同种类机…