UVA - 585 Triangles 暴力
来源:互联网 发布:软件系统 编辑:程序博客网 时间:2024/06/06 05:51
题目大意:要求你找出一个由白色三角形围成的最大三角形
解题思路:假设每一点都为顶点,然后暴力枚举。这里要注意一下三角形的朝向,下标和为奇数的点的三角形的底边是在下面的,而下标和为偶数的点的底边是在上面的
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define maxn 105#define maxl 205int g[maxn][maxl], ans, n;char str[maxl];void dfs(int x, int y, int len, int mark, int sum) { if(x < 0 || x >= n || y < 0 || y >= (2 * n - 1)) { ans = max(ans,sum); return ; } for(int i = y , j = 0; j < len; i++, j++){ if(!g[x][i]) { ans = max(ans, sum); return ; } } if(mark) dfs(x+1,y-1,len + 2, mark, sum + len); else dfs(x-1,y-1,len + 2, mark, sum + len);}void solve() { for(int i = 0; i < n; i++) for(int j = i, k = 0; k < 2 * (n - i) - 1; j++, k++) { if(g[i][j]) { if((i + j) % 2) dfs(i+1,j-1,3,1,1); else dfs(i-1,j-1,3,0,1); } }}int main() { int cas = 1; while(scanf("%d", &n) == 1 && n) { ans = 0; memset(g,0,sizeof(g)); for(int i = 0; i < n; i++) { scanf("%s", str); for(int j = i; j < i + strlen(str); j++) if(str[j - i] == '-') g[i][j] = 1; } solve(); printf("Triangle #%d\n", cas++); 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
- UVA585- 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
- 远程blast的Perl脚本
- Linux串口驱动分析read
- C库函数-fclose
- css知识笔记(五)——css样式设置小技巧
- python 让cpu满载
- UVA - 585 Triangles 暴力
- Maven Pom 文件中的隐式依赖导致Jar冲突
- JAVA类的学习
- imx6 andriod 调试
- 数学之美系列二十四 -- 谈谈动态规划与如何设计动态规划算法
- erlang aes 加解密
- AndroidEventBus带来组件交互和应用退出新方式
- C库函数-fread
- Hibernate命令式SQL查询的两种方式