UVa:585 Triangles
来源:互联网 发布:程序编程入门 编辑:程序博客网 时间:2024/05/21 08:05
根据给的图可以发现要找的三角形一定是等边的,所以每层是1,3,5。。这样。只需要枚举三角形的顶点即可。枚举的时候要注意小三角形,不是该位置为“-”就行的,还要注意小三角形的开口方向。由于有两种方向,所以还要倒着枚举一遍即可。
#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <cmath>#include <vector>#include <queue>#include <set>#include <map>#include <algorithm>#define ull unsigned long long#define INF 2139062143#define inf -2139062144#define MOD 20071027#define MAXN 205#define LIM 18446744073709551615using namespace std;int n;char grid[MAXN][MAXN];inline bool Judge(int x,int y) //{ int m=2*n-x; if(!(1<=x&&x<=n)||!(x<=y&&y<=m)||grid[x][y]!='-') return false; return true;}int ans;void solve1(){ for(int i=1; i<=n; ++i) for(int j=i,k=1; j<=2*n-i; ++j,++k) if(grid[i][j]=='-'&&0==k%2) { int res=1; for(int p=i+1,c=1; p<=n; ++p,++c) if(grid[p][j]=='-') { bool ok=true; for(int q=j-1,cc=0; cc<c&&ok; ++cc,--q) if(!Judge(p,q)) ok=false; for(int q=j+1,cc=0; cc<c&&ok; ++cc,++q) if(!Judge(p,q)) ok=false; if(ok) res+=2*c+1; else break; } else break; ans=max(ans,res); }}void solve2(){ for(int i=n; i>=1; --i) for(int j=i,k=1; j<=2*n-i; ++j,++k) if(grid[i][j]=='-'&&1==k%2) { int res=1; for(int p=i-1,c=1; p>=1; --p,++c) if(grid[p][j]=='-') { bool ok=true; for(int q=j-1,cc=0; cc<c&&ok; ++cc,--q) if(!Judge(p,q)) ok=false; for(int q=j+1,cc=0; cc<c&&ok; ++cc,++q) if(!Judge(p,q)) ok=false; if(ok) res+=2*c+1; else break; } else break; ans=max(ans,res); }}int main(){ int kase=0; while(scanf("%d",&n)&&n) { getchar(); for(int i=1; i<=n; ++i) gets(grid[i]+1); ans=0; solve1(); solve2(); printf("Triangle #%d\n",++kase); printf("The largest triangle area is %d.\n\n",ans); } return 0;}
0 0
- UVA 585 - Triangles(枚举)
- UVa:585 Triangles
- UVA - 585 Triangles
- UVA - 585 Triangles 暴力
- UVA - 585 Triangles
- UVa 585 Triangles(暴力)
- uva 585 - Triangles(暴力枚举)
- UVa 10112 Myacm Triangles
- uva 10112 - Myacm Triangles
- UVA-10112 - Myacm Triangles
- UVa 10112 - Myacm Triangles
- UVa 10112 - Myacm Triangles
- Uva 10112 - Myacm Triangles
- uva 10112 Myacm Triangles
- UVA 10112 Myacm Triangles
- UVA 10112 - Myacm Triangles
- uva 10112 Myacm Triangles
- UVa 10112 - Myacm Triangles
- 编程可以教给你的6个生活习惯
- 黑马程序员----HashCold与HashSet
- windows下php的eAcclerator的下载以及使用
- JS自带函数
- 一个简单的签到程序
- UVa:585 Triangles
- 学习
- IPv4字符串和整数相互转换
- iOS在应用程序中共享自己的文件
- Debug下jmp dword ptr 指令
- struts(4)-----html标签
- 祝福 祈祷 航班
- 黑马程序员----类加载器管理配置文件
- javascript与jquery的区别