华为od机试310求捞
性格测试已过
2020年二本计算机专业毕业,大数据开发,北京
在学校期间各种奖学金,获得过励志,蓝桥杯国三,优秀大学毕业生
四川职高高考,高考考了628可以去211但是当时为情所困去了一个二本师范。现在在社会上学历打的晕头转向
说起机试,就是那个上班那个题,我严重怀疑牛客网的题有问题,第三题通过百分之65输入死活异常...这题是真的有毒
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.nextLine();
String[] s1 = s.split(" ");
int t = Integer.parseInt(s1[0]);
int c = Integer.parseInt(s1[1]);
String ss = in.nextLine();
String[] s2 = ss.split(" ");
int n = Integer.parseInt(s2[0]);
int m = Integer.parseInt(s2[1]);
char[][] arr=new char[n][m];
for (int i = 0; i < n; i++) {
arr[i]=in.nextLine().toCharArray();
}
int[][] check = new int[n][m];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (arr[i][j]=='S') {
if(dfs(i,j,arr,check,t+1,c,5)){
System.out.println("YES");
return;
}else {
System.out.println("NO");
return;
}
}
}
}
}
private static boolean dfs(int i, int j, char[][] arr, int[][] check, int t, int c,int z) {
//System.out.println(i+" "+j);
if (t<0||c<0||check[i][j]==1) return false;
check[i][j]=1;
if (arr[i][j]=='T') return true;
int ud[]={1,0,-1,0};
int lr[]={0,1,0,-1};
boolean flag=false;
for (int k = 0; k < 4; k++) {
int l=i+ud[k];
int r=j+lr[k];
int count=1;
if (k==z){
count=0;
}
if (l>=0&&l<arr.length&&r>=0&&r<arr[0].length){
int cc=0;
if (arr[l][r]=='*') cc=1;
flag=flag||dfs(l,r,arr,check,t-count,c-cc,k);
}
}
check[i][j]=0;
return flag;
}
}
#23届找工作求助阵地##华为od捞人#