标签:qp 洛谷 xl int P1002 过河 sc return false
逻辑没问题,运行超时,得分60
写注释了,不多解释
import java.util.Scanner; public class D1 { static int a,b,c,d,con; //棋盘大小 马的位置 public static void main(String[] args) { Scanner sc=new Scanner(System.in); a=sc.nextInt(); b=sc.nextInt(); c=sc.nextInt(); d=sc.nextInt(); con=0; //到达终点的次数 //初始化棋盘 int[][] qp=new int[a+1][b+1]; for (int i = 0; i < a+1; i++) { for (int j = 0; j < b+1; j++) { qp[i][j]=0; } } //马能跳到的位置如果合法 设置为马的控制区(避免马在边缘 棋盘下标越界) qp[c][d]=1; if (!(c-2<0||d-1<0)){ qp[c-2][d-1]=1; } if (!(c-2<0||d+1>b)){ qp[c-2][d+1]=1; } if (!(c-1<0||d-2<0)){ qp[c-1][d-2]=1; } if (!(c-1<0||d+2>b)){ qp[c-1][d+2]=1; } if (!(c+1>a||d-2<0)){ qp[c+1][d-2]=1; } if (!(c+1>a||d+2>b)){ qp[c+1][d+2]=1; } if (!(c+2>a||d-1<0)){ qp[c+2][d-1]=1; } if (!(c+2>a||d+1>b)){ qp[c+2][d+1]=1; } //开始递归回溯 D1 d=new D1(); d.xl(qp,0,0); //输出结果 System.out.println(con); } //自动寻路 private boolean xl(int[][] qp,int i,int j){ //如果到达终点,回溯并重置为0 到达次数+1 if (qp[a][b]==2){ qp[a][b]=0; con++; return false; } //如果当前位置合法,标记为2,递归下一个位置 if (pd(qp,i,j)){ qp[i][j]=2; if (xl(qp,i+1,j)){ qp[i][j]=0; return false; }else if (xl(qp,i,j+1)){ qp[i][j]=0; return false; } qp[i][j]=0; } return false; } //当前位置是否合法 private boolean pd(int[][] qp,int i,int j){ if (i>=a+1||j>=b+1){ return false; }else if (qp[i][j]!=0){ return false; } return true; } }
标签:qp,洛谷,xl,int,P1002,过河,sc,return,false 来源: https://www.cnblogs.com/qian-136/p/15549471.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。