UVa 1641 ASCII Area

题目

题目大意

在一个\(h × w\)(\(2 ≤ h, w ≤ 100\))的字符矩阵里用.\/画出一个多边形, 计算面积。如下面的样例所示, 面积为\(8\)

1
2
3
4
/\/\
\../
.\.\
..\/

题解

就是道水题是道几何题, /\代表的面积为\(0.5\), 做一个标记, 中间的.面积为\(1\), 枚举一遍即可。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include<cstdio>
int n, m, now;
float ans;
char a[101][101];
int main(int argc, char const *argv[]) {
while (~scanf("%d%d",&n,&m)) {
for (register int i(1); i <= n; ++i) {
scanf("%s",a[i]+1);
}
ans = 0;
now = 0;
for (register int i(1); i <= n; ++i) {
for (register int j(1); j <= m; ++j) {
if (a[i][j] == '\\' || a[i][j] == '/') {
now ^= 1;
ans += 0.5;
} else if(now) {
ans += 1;
}
}
}
if (ans == ans / 1) {
printf("%d\n", int(ans));
}
else printf("%.1f\n",ans);
}
return 0;
}