怎么注册com网站免费的,上海的二字代码,网站可免费做,连锁店品牌设计公司1、坚强的小昆虫
由于新冠肺炎疫情的爆发#xff0c;小明养在宿舍的小昆虫已经很久很久都没有人管了。小昆虫已经饿的不行了#xff0c;必须出来找东西吃#xff0c;可是出来之后需 要走出一个迷宫。小昆虫每次可以朝上、下、左、右四个方向之一走一步#xff0c;且只要走…1、坚强的小昆虫
由于新冠肺炎疫情的爆发小明养在宿舍的小昆虫已经很久很久都没有人管了。小昆虫已经饿的不行了必须出来找东西吃可是出来之后需 要走出一个迷宫。小昆虫每次可以朝上、下、左、右四个方向之一走一步且只要走出任意一条边界线即可逃出迷宫。这只小昆虫曾感染过X星 的一种奇异病毒目前还没有发现任何副作用但是却拥有了一项特异功能——破坏障碍物。 假设小昆虫在一个NM的迷宫中“代表小昆虫的初始位置”.“代表可以通过的空地”“代表可以破坏的障碍物”#代表不可破坏的障碍 物。请问小昆虫最少需要使用多少次特异功能才可以逃出迷宫? 这是一道迷宫变式题关键点在于可以破坏障碍物因此需要分情况DFS import java.util.*;
import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {static int[][] dir {{1,0}, {-1,0}, {0,1}, {0,-1}};public static void main(String[] args) {Scanner in new Scanner(System.in);int T in.nextInt();while (T 0) {T--;int n in.nextInt();int m in.nextInt();char[][] mat new char[n][m];boolean f true;int sx 0, sy 0;for(int i 0; i n; i){// Java无法一个一个字符读入直接读取一整行再转为数组mat[i] in.next().toCharArray();for(int j 0; f j m; j){if(mat[i][j] ){sx i; sy j;f false;}}}// DFS// 标记是否访问过boolean[][] vis new boolean[n][m];// 记录所有的结果ListInteger ans new ArrayList();dfs(sx, sy, 0, vis, ans, mat);Collections.sort(ans);System.out.println(ans.get(0));}}private static void dfs(int sx, int sy, int cnt, boolean[][] vis, ListInteger ans, char[][] mat){vis[sx][sy] true; // 已访问int f 0;for(int[] x : dir){int dx sx x[0];int dy sy x[1];if(dx 0 || dx vis.length || dy 0 || dy vis[0].length){// 达到边界ans.add(cnt);return;}// 如果当前点四周都是# 则一定不能走出去if(mat[dx][dy] #)f;if(!vis[dx][dy]){// 分情况if(mat[dx][dy] .){dfs(dx, dy, cnt, vis, ans, mat);}else if(mat[dx][dy] *){dfs(dx, dy, cnt1, vis, ans, mat);}}}if(f 4){ans.add(-1); // 走不出去return;}}
}2、涂色
小A正在学画画现在线稿已经画好了只剩下涂色部分了。但是小A发现他的颜料不够了。每一块颜料能涂一个色块每一个色块的颜色 是事先决定好了的。 由于颜料不够小A只能尽其所能来涂色。如果一个色块没有了颜料就不能涂色。现在给你画中需要的色块颜色和小A现在手上有的颜 料请你计算小A能涂多少个色块。 使用Hash思想将字符串s1转为长度为26的数组对每个字符进行次数统计然后遍历s2计数不能涂色的数量cnt最后结果就是字符串长度减去cnt import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner in new Scanner(System.in);String s1 in.next();String s2 in.next();int[] a1 new int[26];for(char c : s1.toCharArray()){a1[c-A];}int cnt 0;for(char c : s2.toCharArray()){if(a1[c - A] 0){a1[c - A]--;}else{cnt;}}System.out.println(s1.length() - cnt);}
}