获赞
75
粉丝
1
关注
1
看过 TA
12
华南理工大学
2019
前端工程师
IP属地:未知
暂未填写个人简介
私信
关注
2018-09-20 21:14
已编辑
滴滴出行_高级研发工程师
输入: 5 5 3 hello help high p a b h m f h e c p o i l l h b g h o n h x c m l 输出: hello high 这明显输出的两个第一个 h 是重的吧?我不标记重复字母时,正确率 40%,标记重复字母,这个案例只能输出 hello,正确率变成 0% ? 是我看错题目了吗,求各位 dalao 讲解。
在笔试的懒羊羊很贪睡:AC 代码 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int cols = scanner.nextInt(); int rows = scanner.nextInt(); int k = scanner.nextInt(); String[] words = new String[k]; for (int i = 0; i < k; i++) { words[i] = scanner.next(); } String[][] dic = new String[rows][cols]; for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { dic[i][j] = scanner.next(); } } boolean[][] visited = new boolean[rows][cols]; for (String word : words) { for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { if (find(dic, i, j, word, 0, visited)) { System.out.println(word); } } } } } private static boolean find(String[][] dic, int i, int j, String word, int k, boolean[][] visited) { if (k >= word.length()) { return true; } if (i = dic.length || j = dic[0].length || visited[i][j] || !dic[i][j].equals(word.charAt(k) + "")) { return false; } visited[i][j] = true; boolean f = find(dic, i - 1, j, word, k + 1, visited) || find(dic, i + 1, j, word, k + 1, visited) || find(dic, i, j - 1, word, k + 1, visited) || find(dic, i, j + 1, word, k + 1, visited); visited[i][j] = false; return f; } }
投递字节跳动等公司6个岗位 >
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客企业服务