uva 1419 - Ugly Windows(暴力)
2014-01-01 23:29
295 查看
题目链接:uva 1419 - Ugly Windows
题目大意:给出一张图,模仿电脑窗口,问有哪些窗口未被其他窗口覆盖。
解题思路:水题,先找到一个点,然后枚举出长宽,再判断框框和框框里面。注意样例中的特殊情况,左上角被覆盖。
#include <stdio.h>
#include <string.h>
const int N = 105;
int r, c, v
;
char g
;
bool judge(int x, int y, int l, int w) {
if (w - x < 2 || l - y < 2) return false;
for (int i = y; i < l; i++) if (g[w-1][i] != g[x][y]) return false;
for (int i = x; i < w; i++) if (g[i][l-1] != g[x][y]) return false;
for (int i = x + 1; i < w - 1; i++) {
for (int j = y + 1; j < l - 1; j++) if (g[i][j] != '.') return false;
}
return true;;
}
void solve() {
for (int i = 0; i < r; i++) {
for (int j = 0; j < c; j++) if (g[i][j] != '.' && v[g[i][j] - 'A'] == 0) {
v[g[i][j]-'A'] = 1;
int l = j, w = i;
while (g[i][l] == g[i][j]) l++;
while (g[w][j] == g[i][j]) w++;
if (judge(i, j, l, w)) v[g[i][j]-'A'] = 2;
}
}
}
int main() {
while (scanf("%d%d%*c", &r, &c) == 2 && r + c) {
memset(v, 0, sizeof(v));
for (int i = 0; i < r; i++) gets(g[i]);
solve();
for (int i = 0; i < 30; i++) if (v[i] == 2) printf("%c", 'A' + i);
printf("\n");
}
return 0;
}
题目大意:给出一张图,模仿电脑窗口,问有哪些窗口未被其他窗口覆盖。
解题思路:水题,先找到一个点,然后枚举出长宽,再判断框框和框框里面。注意样例中的特殊情况,左上角被覆盖。
#include <stdio.h>
#include <string.h>
const int N = 105;
int r, c, v
;
char g
;
bool judge(int x, int y, int l, int w) {
if (w - x < 2 || l - y < 2) return false;
for (int i = y; i < l; i++) if (g[w-1][i] != g[x][y]) return false;
for (int i = x; i < w; i++) if (g[i][l-1] != g[x][y]) return false;
for (int i = x + 1; i < w - 1; i++) {
for (int j = y + 1; j < l - 1; j++) if (g[i][j] != '.') return false;
}
return true;;
}
void solve() {
for (int i = 0; i < r; i++) {
for (int j = 0; j < c; j++) if (g[i][j] != '.' && v[g[i][j] - 'A'] == 0) {
v[g[i][j]-'A'] = 1;
int l = j, w = i;
while (g[i][l] == g[i][j]) l++;
while (g[w][j] == g[i][j]) w++;
if (judge(i, j, l, w)) v[g[i][j]-'A'] = 2;
}
}
}
int main() {
while (scanf("%d%d%*c", &r, &c) == 2 && r + c) {
memset(v, 0, sizeof(v));
for (int i = 0; i < r; i++) gets(g[i]);
solve();
for (int i = 0; i < 30; i++) if (v[i] == 2) printf("%c", 'A' + i);
printf("\n");
}
return 0;
}
相关文章推荐
- UVa 1419 - Ugly Windows (DFS + 暴力)
- uva 1419 Ugly Windows(暴力求解)
- UVA 1419 - Ugly Windows
- UVA - 1419 Ugly Windows
- UVA 1419 - Ugly Windows
- UVa 1419 Ugly Windows 解题报告(水题)
- 1419 - Ugly Windows(暴力枚举)
- UVa1419 - Ugly Windows
- 【暴力搜索】[UVa 11212]Editing a Book
- UVA 10729 - Treequivalence(暴力枚举)
- UVa 11520 Fill the Square (水题,暴力)
- UVa 110 Meta-Loopless Sorts 解题报告(暴力)
- UVA - 10825 Anagram and Multiplication 暴力
- UVA 140 全排列+暴力
- uva 11127(暴力)
- UVA 725 Division (暴力)
- UVA 10976 Fractions Again?! (暴力预处理)
- UVA - 131 The Psychic Poker Player (暴力枚举+模拟)
- UVA 11205 The broken pedometer 果断还是暴力吧。。。
- UVA10010(八方向暴力枚举)