标签:10 洛谷 int fy dfs fx static total P1605
洛谷链接:https://www.luogu.com.cn/problem/P1605
很基础的一道搜索题,适合入门
import java.util.Scanner;
public class Main {
static int[][] map=new int[10][10]; //地图
static boolean[][] temp=new boolean[10][10]; //走过的标记
static int[] dx= {0,0,1,-1}; //打表
static int[] dy= {-1,1,0,0}; //打表
static int total=0,fx=0,fy=0,sx=0,sy=0,T=0,n=0,m=0,l=0,r=0;//total计数器,fx,fy是终点坐标,sx,sy是起点坐标,T是障碍总数,n,m是地图的长和宽,l,r是障碍的横坐标和纵坐标;
public static void walk(int x,int y){ //定义walk
if(x==fx && y==fy) { //如果到了结束坐标
total++; //总数增加
return; //返回,继续搜索
}else {
for(int i=0;i<=3;i++) { //0——3是左,右,下,上四个方向;
if(temp[x+dx[i]][y+dy[i]]==false && map[x+dx[i]][y+dy[i]]==1) { //判断没有走过和没有障碍
temp[x][y]=true; //走过的地方打上标记;
walk(x+dx[i],y+dy[i]);
temp[x][y]=false; //还原状态;
}
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
n=in.nextInt(); //长度
m=in.nextInt(); //宽度
T=in.nextInt(); //障碍个数
for(int ix=1;ix<=n;ix++) {
for(int iy=1;iy<=m;iy++) {
map[ix][iy]=1; //把地图刷成1
}
}
sx=in.nextInt(); //起始x
sy=in.nextInt(); //起始y
fx=in.nextInt(); //结束x
fy=in.nextInt(); //结束y
for(int u=1;u<=T;u++) {
l=in.nextInt(); //l,r是障碍坐标;
r=in.nextInt();
map[l][r]=0;
}
walk(sx,sy);
System.out.println(total);
}
}
Pluto20150714
发布了68 篇原创文章 · 获赞 26 · 访问量 563
私信
关注
标签:10,洛谷,int,fy,dfs,fx,static,total,P1605 来源: https://blog.csdn.net/weixin_44685629/article/details/104060768
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。