red and black 杭电1312 java深搜
2016-03-12 23:06
411 查看
``` //将'.'看做是通路 将'#'看做是墙, 按顺时针方向,利用深度优先搜索递归``` import java.util.*; public class Main { private static int count = 0; private static int [] dx = {0,1,0,-1} ; //顺时针移动 private static int [] dy = {1,0,-1,0} ; private static int w ; private static int h ; private static char[][] array = new char[21][21] ; public static void main(String [] args){ Scanner input = new Scanner(System.in); while(input.hasNext()){ h = input.nextInt() ; // 读入列数 w = input.nextInt() ; //读入行数 String s = input.nextLine() ; // 读取第一行剩下的空格 if(h == 0 || w == 0){ break ; } else{ int x = 0, y =0 ; for(int i = 0 ; i < w ; i++){ s = input.nextLine() ; int index ; if((index = s.indexOf("@")) >= 0){ x = i ; y = index ; } array[i] = s.toCharArray() ; } dfs(array,x,y) ; System.out.println(count); count = 0 ; } } } public static void dfs(char [][] array , int x , int y){ if(x >= w || y >= h || x < 0 || y < 0){//越界,回溯 return ; }else if(array[x][y] == '#' ){ // 遇到墙 ,回溯 return ; }else if(array[x][y] == '.'|| array[x][y] =='@'){ count++; array[x][y]='#' ; for(int i = 0 ; i < 4 ; i++){ x += dx[i] ; y += dy[i] ; dfs(array,x,y); x -= dx[i] ; y -= dy[i] ; } } } }
相关文章推荐
- java的垃圾回收机制浅理解
- mybatis与spring的整合
- 20145330孙文馨 《Java程序设计》第二周学习总结
- Java NIO: Non-blocking Server
- Java基础练习
- Java UDP 编程
- Java NIO ServerSocketChannel
- Spring IOC容器概念
- eclipse下maven项目保持原有目录结构配置resin运行环境
- 20145127《java程序设计》第二周学习总结
- java线程池ThreadPoolExecutor的使用
- Spring MVC中的视图解析ViewResolver
- java语法_1:面向对象:1
- FileReader文件字符输入流
- Java NIO SocketChannel
- Java NIO FileChannel
- eclipse安装extjs插件
- java内部类的可见性总结和java内部类的创建
- Springmvc框架本地化和国际化
- JAVA设计模式--观察者