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 }

 

转载于:https://www.cnblogs.com/hkxy125/p/9631821.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值