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

(2596. 检查骑士巡视方案leetcode,经典深搜)-------------------Java实现

(2596. 检查骑士巡视方案leetcode,经典深搜)-------------------Java实现

题目表述

骑士在一张 n x n 的棋盘上巡视。在 有效 的巡视方案中,骑士会从棋盘的 左上角 出发,并且访问棋盘上的每个格子 恰好一次 。

给你一个 n x n 的整数矩阵 grid ,由范围 [0, n * n - 1] 内的不同整数组成,其中 grid[row][col] 表示单元格 (row, col) 是骑士访问的第 grid[row][col] 个单元格。骑士的行动是从下标 0 开始的。

如果 grid 表示了骑士的有效巡视方案,返回 true;否则返回 false。

注意,骑士行动时可以垂直移动两个格子且水平移动一个格子,或水平移动两个格子且垂直移动一个格子。下图展示了骑士从某个格子出发可能的八种行动路线。

样例

在这里插入图片描述

条件

n == grid.length == grid[i].length
3 <= n <= 7
0 <= grid[row][col] < n * n
grid 中的所有整数 互不相同

思路

注意点

ac代码

Java:

package leetcode2596;import java.util.Scanner;class Solution {public boolean checkValidGrid(int[][] grid) {int now = 0;int now_x = 0,now_y = 0;int n = grid.length;boolean flag =false;int[][] next_step = new int[][]{{2,1},{2,-1},{-2,1},{-2,-1},{1,2},{1,-2},{-1,2},{-1,-2}};if(grid[0][0]!=0)return false;while(now<n*n){for (int i=0;i<8;i++){now_x+=next_step[i][0];now_y+=next_step[i][1];if (now_x>=0&&now_x<n&&now_y>=0&&now_y<n&&grid[now_x][now_y]==(now+1)){now++;flag=true;break;}now_x-=next_step[i][0];now_y-=next_step[i][1];}if (flag)flag=false;elsebreak;}System.out.println("now:"+now);return now==(n*n-1)?true:false;}
}
public class leetcode2596 {public static void main(String[] args) {Scanner cin = new Scanner(System.in);int n = cin.nextInt();cin.nextLine();int [][] grid = new int[n][];for (int i=0;i<n;i++){grid[i] = new int[n];for (int j=0;j<n;j++)grid[i][j] = cin.nextInt();cin.nextLine();}for (int[] x :grid){for (int y:x)System.out.print(y+" ");System.out.println();}Solution s = new Solution();System.out.println(s.checkValidGrid(grid));}
}
//input
//5
//0 11 16 5 20
//17 4 19 10 15
//12 1 8 21 6
//3 18 23 14 9

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/squares-of-a-sorted-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

http://www.lryc.cn/news/168700.html

相关文章:

  • Docker 部署 Bitwarden RS 服务
  • python与mongodb交互-->pymongo
  • 【网络】计算机网络基础
  • (1)输入输出函数:cin和cout(2)数学函数:sqrt、pow、sin、cos、tan等
  • ArmSom-W3开发板之PCIE的开发指南(一)
  • Android 13.0 framework修改AlertDialog对话框的button样式
  • 如何使用ArcGIS Pro提取河网水系
  • python pytesseract 中文文字批量识别
  • Python 之plt.plot()的介绍以及使用
  • 自动化生成代码:MyBatis 的 Generator与MyBatis-Plus 的 AutoGenerator
  • 达梦数据库-DW-国产化--九五小庞
  • LeetCode 753. 破解保险箱【欧拉回路,DFS】困难
  • 深度学习概念(术语):Fine-tuning、Knowledge Distillation, etc
  • tcp_v4_connect函数的解析
  • go-channel
  • K8s操作命令
  • 【MySQL】 MySQL数据库基础
  • vscode 下载安装
  • springboot对接postgres
  • [python 刷题] 242 Valid Anagram
  • 算法通过村第七关-树(递归/二叉树遍历)青铜笔记|手撕递归
  • #循循渐进学51单片机#点亮你的LED#not.2
  • 基于Java+SpringBoot+Vue+uniapp点餐小程序(亮点:协同过滤算法、会员系统,购物车结算、在线聊天)
  • 深度学习-全连接神经网络-详解梯度下降从BGD到ADAM - [北邮鲁鹏]
  • 数据结构--二叉排序树
  • Python | 根据子列表中的第二个元素对列表进行排序
  • qsort函数详细讲解以及利用冒泡排序模拟实现qsort函数
  • C++QT day6
  • List与ArrayList
  • 【C++】特殊类的设计