UVa 1641 - ASCII Area

链接:

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4516

 

题意:

在一个h*w(2≤h,w≤100)的字符矩阵里用“.”、“\”和“/”画出一个多边形,计算面积。

 

分析:

这是一道和几何相关的题目,不过不需要高深的几何知识。
每个格子要么全白,要么全黑,要么半白半黑,只要能准确地判断出来即可。
字符“\”和“/”都是半白半黑,问题在 于“.”到底是全白还是全黑。
解决方法是从上到下从左到右处理,沿途统计“/”和“\”。
当这两个字符出现偶数次时说明接下来的格子在多边形外;奇数次则说明接下来的格子在多边形内。

 

代码:

 1 import java.io.*;
 2 import java.util.*;
 3 
 4 public class Main {
 5     Scanner cin = new Scanner(new BufferedInputStream(System.in));
 6     
 7     void MAIN() {
 8         while(cin.hasNext()) {
 9             int h = cin.nextInt();
10             int w = cin.nextInt();
11             int ans = 0, half = 0;
12             while(h --> 0) {
13                 char s[] = cin.next().toCharArray();
14                 for(int i = 0; i < w; i++) {
15                     if(s[i] == '.') {
16                         if(half % 2 == 1) ans++;
17                     } else half++;
18                 }
19             }
20             System.out.println(ans + half/2);
21         }
22     }
23     
24     public static void main(String args[]) { new Main().MAIN(); }
25 }

 

posted @ 2018-09-11 23:58  Ctfes  阅读(173)  评论(0编辑  收藏  举报