uva 585 - Triangles(暴力枚举)

来源:互联网 发布:成都知言科技有限公司 编辑:程序博客网 时间:2024/05/22 14:49

题目链接:uva 585 - Triangles


题目大意:给出一个倒三角,由若干个小三角形组成,有些三角形为涂上颜色的,问说最大能找出最大的三角形面积。


解题思路:枚举每个没有上色的三角形,向一个方向枚举层数,注意坐标为奇数的只能往下,偶数只能往上。


#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;const int N = 205;int n, ans, v[N][N];void init() {char str[N * 2];ans = 0;memset(v, -1, sizeof(v));for (int i = 0; i < n; i++) {gets(str);int len = strlen(str);for (int j = 0; j < len; j++) {if (str[j] == '-') v[i][j] = 0;}}}void dfs(int x, int y, int d, int dir) {if (x < 0 || x > n) {ans = max(ans, d);return;}for (int i = y - d; i <= y + d; i++) {if (v[x][i] == -1) {ans = max(ans, d);return ;}}dfs(x + dir, y, d + 1, dir);}void solve() {for (int i = 0; i < n; i++) {int t = (n - i) * 2 + i - 1;for (int j = i; j < t; j++) if (v[i][j] == 0) {if ((j + i) % 2)dfs(i, j, 0, 1);else dfs(i, j, 0, -1);}}}int main() {int cas = 1;while(scanf("%d%*c", &n) == 1 && n) {init();solve();printf("Triangle #%d\n", cas++);printf("The largest triangle area is %d.\n\n", ans * ans);}return 0;}


1 0
原创粉丝点击