华为 4.10 第三题 求解

import java.util.*;
public class Main3{

public static int f(int[][] arr,int n,int m,int x,int y,int z,int w) {
int a=0,b=0,c=0,d=0;
if(x==z&&y==w) {
return 1;
}
if(x-1>=0&&arr[x-1][y]>arr[x][y]) {
a=f(arr,n,m,x-1,y,z,w);
}
if(x+1<=n-1&&arr[x+1][y]>arr[x][y]) {
b=f(arr,n,m,x+1,y,z,w);
}
if(y-1>=0&&arr[x][y-1]>arr[x][y]) {
c=f(arr,n,m,x,y-1,z,w);
}
if(y+1<=m-1&&arr[x][y+1]>arr[x][y]) {
d=f(arr,n,m,x,y+1,z,w);
}
return a+b+c+d;
}


public static void main(String[] args){
Scanner in =new Scanner(System.in);
while(in.hasNext()){
int n=in.nextInt();
int m=in.nextInt();
int[][] arr=new int[n][m];
for(int i=0;i<n;i++) {
for(int j=0;j<m;j++) {
arr[i][j]=in.nextInt();
}
}
int x=in.nextInt();
int y=in.nextInt();
int z=in.nextInt();
int w=in.nextInt();
System.out.println(f(arr,n,m,x,y,z,w));
}
}
}
#华为##笔试题目#
全部评论
暴力递归过了0.36,想不出优化的办法
点赞 回复 分享
发布于 2019-04-10 22:27
def helper(x,y,hb,z,w,debug=False):     ans1=ans2=ans3=ans4=0     if x+1<len(hb) and hb[x+1][y]>hb[x][y]:         if debug:print(x+1,y)         if x+1==z and y==w:return 1         ans1 = helper(x+1,y,hb,z,w,debug)     if x-1>=0 and hb[x-1][y]>hb[x][y]:         if debug:print(x-1,y)         if x-1==z and y==w:return 1         ans2 = helper(x-1,y,hb,z,w,debug)     if y+1<len(hb[0]) and hb[x][y+1]>hb[x][y]:         if debug:print(x,y+1)         if x==z and y+1==w:return 1         ans3 = helper(x,y+1,hb,z,w,debug)     if y-1>=0 and hb[x][y-1]>hb[x][y]:         if debug:print(x,y-1)         if x==z and y-1==w:return 1         ans4 = helper(x,y-1,hb,z,w,debug)     return ans1+ans2+ans3+ans4 def solution():     N,M = 6,5     hb = [[0,1,0,0,0],[0,2,3,0,0],[0,0,4,5,6],[0,0,19,8,7],[0,0,20,9,0],[0,0,0,10,0]]     x,y,z,w = 0,1,5,3 #     N,M = 5,5 #     hb = [[0,1,0,0,0],[0,2,3,0,0],[0,0,4,5,6],[0,0,9,8,7],[0,0,10,0,0]] #     x,y,z,w = 0,1,4,2          flag = [[0 for i in range(len(hb[0]))] for j in range(len(hb))]     flag[x][y]=1     output = helper(x,y,hb,z,w,debug=False)     print(output%1000000000) solution()
点赞 回复 分享
发布于 2019-04-11 10:20

相关推荐

不愿透露姓名的神秘牛友
02-12 18:14
RT,这周五就是情人节了,前女友给我发了消息,我该不该回?
Yoswell:原则上来说让她滚,但是本着工作很累下班想吃瓜的心态,我觉得你可以回一下
点赞 评论 收藏
分享
bLanK的小号:建议自己写一个比较新颖的项目,比如思维导图,在线文档,仿造postman,仿造一个组件库
点赞 评论 收藏
分享
02-08 20:56
已编辑
南京工业大学 Java
在等offer的比尔很洒脱:我也是在实习,项目先不说,感觉有点点小熟悉,但是我有点疑问,这第一个实习,公司真的让实习生去部署搭建和引入mq之类的吗,是不是有点过于信任了,我实习过的两个公司都是人家正式早搭好了,根本摸不到部署搭建的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务