链接:
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 }