poj 1471 dfs 搜索三角形

原创 2012年03月27日 21:02:50

题意:在字符是'-'的区域中,找出最大的三角形。

思路:枚举'-'的地方作为三角形的顶,搜索三角形。注意,跟原图对比,判断三角形是正的还是倒的。。。

#include<iostream>
using namespace std;
int sum , len;
char map[220][500];
int dfs(int y,int x) {
	int st = y;
	int ed = y;
	int h = 1 , temp = x;
	int i , j;
	bool flag = 0;
	if ((x+y)%2==0) {
		while(1) {
			for (i = st - 1 ; i <= ed + 1 ; i ++) {
				if (map[temp-1][i]!='-') {//向上搜 
					flag = 1;//如果有不是'-'的  那么就搜索失败了 
					break;	
				}		
			}
			if (flag == 1) break;
			else h++;//如果没失败的话 搜索三角形的下一层  起始位置--  末尾++ 层数-- 
			st --; ed ++; temp --;
		}	
	} else {
		while(1) {
			for (i = st - 1 ; i <= ed + 1 ; i ++) {
				if (map[temp+1][i]!='-') {
					flag = 1;
					break;	
				}		
			}
			if (flag == 1) break;
			else h++;
			st --; ed ++; temp ++;
			//printf("h=%d\n",h);
		}		
	}
	return h;	
} 
int main() {
	int n , i , j;
	int t = 1;
	while (scanf("%d",&n)!=EOF) {
		if (n == 0) break;	
		getchar();
		for (i = 0 ; i < n ; i ++) gets(map[i]);
		int ans = 0 , tmp;
		for (i = 0 ; i < n ; i ++)	
			for (j = i ; j < (2*n-1-i) ; j ++) {
				if (map[i][j]=='-')	{
					tmp = dfs(j , i);//找到可搜的位置  从第i层搜 第j个位置 搜索的时候注意与原图对比 坐标和是偶数向上搜 奇数向下 
					ans = tmp > ans ? tmp : ans;	//找到三角形的层数 S = ans * ans 就OK 
					//printf("%d,%d tmp = %d\n",i,j,tmp);
				}
			}
			printf("Triangle #%d\n",t++);
			printf("The largest triangle area is %d.\n\n",ans*ans);
	}	
}


DFS深度优先搜索(2)--poj1321(棋盘问题 经典DFS)

棋盘问题  Time Limit:1000MS    Memory Limit:10000KB    64bit IO Format:%lld & %llu Description...
  • Acmer_Sly
  • Acmer_Sly
  • 2016年09月10日 14:17
  • 1287

BFS广度优先搜索(4)--hdu2717(poj3278)(基础题)

Catch That C Time Limit:2000MS    Memory Limit:65536KB    64bit IO Format:%lld & %llu
  • Acmer_Sly
  • Acmer_Sly
  • 2016年09月13日 00:23
  • 302

poj入门水题--深度搜索(dfs)题 1011,含各种剪枝,比较经典

深度搜索(dfs)题 1011,含各种剪枝,比较经典
  • qq_17246605
  • qq_17246605
  • 2016年12月25日 20:49
  • 841

POJ 1011 最小的木棒 (dfs+剪枝|| 搜索好题)

Description 乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过50个长度单位。然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度...
  • h1021456873
  • h1021456873
  • 2016年03月15日 00:36
  • 590

poj 3984 迷宫问题 dfs 求迷宫路径

题目地址:http://poj.org/problem?id=3984 利用图论中深搜的思想,存在边就是x,y ->  x+1,y  还有x,y -> x,y+1   然后仍然是访问未访问的而且不是墙...
  • jingqi814
  • jingqi814
  • 2013年09月25日 18:03
  • 3284

[poj 1014]Dividing的DFS解法解读和DP解法

转载来源: http://blog.csdn.net/lyy289065406/article/details/6661449 这道题比较特殊,用DFS也是对的,而且可以进行优化,即使直接n[i]...
  • zhangliang011258
  • zhangliang011258
  • 2013年07月28日 17:16
  • 779

DFS深度优先搜索(入门)

DFS入门(递归写法) 这两天在学习深度优先搜索(DFS),感觉DFS比BFS难,一开始主要是标记搞不清楚。DFS在回溯时要取消原先的标记,而BFS不存在回溯也就不存在取消标记这一问题。DFS可以用...
  • Coding_Or_Dead
  • Coding_Or_Dead
  • 2016年08月26日 11:06
  • 2987

POJ 鸣人和佐助

网上的代码: #include #include #include #include using namespace std; const int maxn = 210; char g[m...
  • qq_32473657
  • qq_32473657
  • 2016年07月25日 09:28
  • 1166

深度优先搜索(DFS)-例题附思路-总结(一)

关于DFS的定义等基本的东西我就不说了~百度吧。 每个人的学习方法不一样,在我的学习中我是把DFS是分了类的,虽然总体思路是一样的,但是不同的应用环境就会应用不同的DFS模型,是的,模型。 下面我把目...
  • qq_32183461
  • qq_32183461
  • 2016年02月20日 20:16
  • 7384

poj 初期基本搜索

第三个专题了,初期基本搜索: 都是水题,两天完全可以刷完。。。 (1)、深度优先搜索 1、poj2488 题意:给出一个国际棋盘的大小,判断马能否不重复的走过所有格,并记录下其中按字典序排列的...
  • consciousman
  • consciousman
  • 2017年01月19日 10:37
  • 568
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:poj 1471 dfs 搜索三角形
举报原因:
原因补充:

(最多只允许输入30个字)