有一片的网格,每个网格上有一个之间的正整数。 从网格中的任意位置出发,四个方向都可以走,走过的位置也可以再走。 走了次之后,经过的位置会形成一个位数,最多可以形成多少个不同的位数呢?
区块链毕设网qklbishe.com为您提供问题的解答
有一片的网格,每个网格上有一个之间的正整数。
从网格中的任意位置出发,四个方向都可以走,走过的位置也可以再走。
走了次之后,经过的位置会形成一个位数,最多可以形成多少个不同的位数呢?
乍一看毫无限制,DFS似乎无法结束,再仔细一看发现长度固定为6,可以作为DFS退出条件。对所有点都探索一遍,使用Set存放结果可以顺利去重,最后Set大小即为答案!
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Set<String> set = new HashSet<>(); int arr[][] = new int[5][5]; for(int i=0;i<5;i++){ for(int j=0;j<5;j++){ arr[i][j] = scanner.nextInt(); } } for(int i=0;i<5;i++){ for(int j=0;j<5;j++){ dfs(arr,i,j,0,"",set); } } System.out.println(set.size()); } private static void dfs(int arr[][],int i,int j,int times,String s,Set<String> set){ if(times==5){ set.add(s+arr[i][j]); return; } String str = s+arr[i][j]; if(i<4){ dfs(arr,i+1,j,times+1,str,set); } if(j<4){ dfs(arr,i,j+1,times+1,str,set); } if(i>0){ dfs(arr,i-1,j,times+1,str,set); } if(j>0){ dfs(arr,i,j-1,times+1,str,set); } } }
53:06
以上就是关于问题有一片的网格,每个网格上有一个之间的正整数。 从网格中的任意位置出发,四个方向都可以走,走过的位置也可以再走。 走了次之后,经过的位置会形成一个位数,最多可以形成多少个不同的位数呢?的答案
欢迎关注区块链毕设网-
web3一级市场套利打新赚钱空投教程
区块链NFT链游项目方科学家脚本开发培训