/hdu 1045 Fire Net(主要用到dfs)
来源:互联网 发布:国际货币组织数据 编辑:程序博客网 时间:2024/06/05 18:02
//hdu 1045 Fire Net(主要用到dfs)/*题意:大概意思就是:给你一张n*n的图;只有城墙和空道,然后样在空地放房子,并且房子不对相对面;求最多放多少个房子。题解:dfs式暴力回溯可以:关键是怎么dfs;要在构一个数据图,为了更好的回溯,和判断这是否可以再放房子来防止相对面。*/#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int N=10;char ma[N][N];//图int nma[N][N];bool flag[N][N];int n;int ansmax;void maup(int ti,int tj)//给你一个点,对所有上下左右都进行数据相加,来防止房子产生对面{ flag[ti][tj]=true; nma[ti][tj]++; for(int i=1;i<n;i++) { if(ti+i>=n||ma[ti+i][tj]=='X') { break; } nma[ti+i][tj]++; } for(int i=1;i<n;i++) { if(ti-i<0||ma[ti-i][tj]=='X') { break; } nma[ti-i][tj]++; } for(int i=1;i<n;i++) { if(tj+i>=n||ma[ti][tj+i]=='X') { break; } nma[ti][tj+i]++; } for(int i=1;i<n;i++) { if(tj-i<0||ma[ti][tj-i]=='X') { break; } nma[ti][tj-i]++; }}void madown(int ti,int tj)//回溯上面数据{ for(int i=1;i<n;i++) { if(tj-i<0||ma[ti][tj-i]=='X') { break; } nma[ti][tj-i]--; } for(int i=1;i<n;i++) { if(tj+i>=n||ma[ti][tj+i]=='X') { break; } nma[ti][tj+i]--; } for(int i=1;i<n;i++) { if(ti-i<0||ma[ti-i][tj]=='X') { break; } nma[ti-i][tj]--; } for(int i=1;i<n;i++) { if(ti+i>=n||ma[ti+i][tj]=='X') { break; } nma[ti+i][tj]--; } nma[ti][tj]--; flag[ti][tj]=false;}void dfs(int ti,int tj,int v)//暴力搜索回溯找出最多房子{ maup(ti,tj); //============================= if(ansmax<v) { ansmax=v; } for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(ma[i][j]=='.'&&nma[i][j]==0&&flag[i][j]==false) { dfs(i,j,v+1); } } } //============================ madown(ti,tj);}int main(){ while(scanf("%d",&n)!=EOF) { if(n==0) break; for(int i=0;i<n;i++) { scanf("%s",ma[i]); } memset(flag,false,sizeof(flag)); memset(nma,0,sizeof(nma)); ansmax=0; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(ma[i][j]=='.') { dfs(i,j,1); } } } printf("%d\n",ansmax); } return 0;}
0 0
- /hdu 1045 Fire Net(主要用到dfs)
- hdu 1045 Fire Net-dfs
- hdu 1045 Fire Net dfs
- 【DFS】hdu 1045 Fire Net
- hdu 1045 Fire Net(dfs)
- HDU 1045 Fire Net【DFS】
- hdu 1045 Fire Net (dfs)
- HDU--1045--Fire Net--DFS
- dfs hdu 1045 Fire Net
- hdu 1045 Fire Net【dfs】
- hdu 1045 Fire Net(dfs)
- HDU 1045 Fire Net dfs
- hdu-1045 Fire Net(DFS)
- HDU 1045-Fire Net(DFS)
- HDU 1045 Fire Net(DFS)
- 杭电hdu 1045 Fire Net dfs
- hdu 1045 Fire Net (最爱 DFS)
- hdu 1045 Fire Net (DFS)
- hdu 1046 Gridland(规律题)
- Lucene段合并的参数估计
- ZOJ 2913 Bus Pass (最近的最远BFS HDU2377)
- opencv c++函数 基础8 离散傅立叶变换
- Socket(上传文件)实例
- /hdu 1045 Fire Net(主要用到dfs)
- 高性能 xmpp 服务器 ejabberd
- kafka安装笔记
- 安装ubuntu之后,需要做什么
- linux安装jdk和tomcat
- TLD跟踪算法学习及其在摄像机控制中的应用
- JDK6中AtomicInteger的实现
- hdu 5067 Harry And Dig Machine
- C++虚函数 与java 接口