hdu1045+bfs Fire Net
来源:互联网 发布:网络设备端口流量统计 编辑:程序博客网 时间:2024/04/29 14:08
大概思路 就是dfs去遍历每个格子 去当前位置每行每列去放在模块 当放置一个模块的时候 去判断这一行这一列是否有已经放置过的模块 直至全部遍历
AC代码
import java.util.Scanner;public class Main{ /** * @param args */ static int n; static char map[][]=new char[5][5]; static int dx[] = {1,-1,0,0}; static int dy[] = {0,0,1,-1}; static int max; public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan=new Scanner(System.in); while((n=scan.nextInt())>0){ for(int i=0;i<n;i++){ String str=scan.next(); char a[]=str.toCharArray(); for(int j=0;j<a.length;j++){ map[i][j]=a[j]; } } max=0; dfs(0);//遍历 System.out.println(max); } } private static void dfs(int ans) { // TODO Auto-generated method stub for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(ok(i,j)){//去判断当前位置是否可以放置模块 map[i][j]='1'; dfs(ans+1); map[i][j]='.';//回溯 } } if(max<ans){ max=ans; } } } private static boolean ok(int x, int y) { // TODO Auto-generated method stub int x1,y1; if(map[x][y]!='.') return false; for(int i=0;i<4;i++){ x1=x+dx[i]; y1=y+dy[i]; while(true){ if(x1<0||y1<0||x1>=n||y1>=n||map[x1][y1]=='X') break; else if(map[x1][y1]=='1'){ return false; } x1+=dx[i]; y1+=dy[i]; } } return true; }}
阅读全文
0 0
- hdu1045+bfs Fire Net
- [BFS]HDU1045 Fire Game
- HDU1045:Fire Net(DFS)
- HDU1045 Fire Net
- HDU1045:Fire Net(DFS)
- HDU1045 Fire Net 【DFS】
- hdu1045 Fire Net
- hdu1045---Fire Net
- HDU1045 Fire Net
- HDU1045 Fire Net
- Fire Net--hdu1045
- HDU1045 Fire Net(DFS)
- hdu1045 Fire Net
- HDU1045 Fire Net DFS
- HDU1045&&ZOJ1002-Fire Net
- HDU1045 ZOJ1002 Fire Net
- hdu1045 Fire Net
- HDU1045 Fire Net
- 新建scala工程并导出jar运行
- mybatis 配置文件
- 彻底解决Android GPS没法定位这一顽固问题
- Spring Security
- 2017年上海金马五校程序设计竞赛(网上资格赛)Problem A : Corn's new language
- hdu1045+bfs Fire Net
- linux下安装jdk和tomcat的方法
- 2017.5.21测试 题二 朋友
- Bzoj4197: [Noi2015]寿司晚宴
- Oracle/MySQL/SQL Server创建/删除视图
- 2017年国内开源镜像站点
- phpstorm/webstorm/idea 出现一只刷新缓存Updating Index
- 关于dubbo分布式项目管理(生产者/消费者)简单Demo
- adf4360的寄存器写入顺序