您的位置:首页 > 其它

ASCII Area UVA - 1641

2017-11-10 21:00 323 查看
比较简单的一道题目,注意不论任何时候,出现'\'或者'/'的时候,都会出现一次反转,也就是之前在图形内,那么下一个格子就不在图形内,之前不在图形内部,那么下一个格子就在图形内部。同时如果出现'.',那么就判断目前是否在图形内,如果在图形内,那么总面积就加1。同时最后的结果就是‘/’以及'\'总和的一半,加上那些包括在图形内的'.'的部分即可,具体实现见如下代码:

#include<iostream>
#include<vector>
#include<string>
#include<set>
#include<stack>
#include<queue>
#include<map>
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<cstring>
#include<sstream>
#include<cstdio>
#include<deque>
#include<functional>
using namespace std;

int main(){
int h, w;
while (cin >> h >> w){
int area = 0;
int amount = 0;
for (int i = 0; i < h; i++){
string s;
cin >> s;
int in = 0;
for (int j = 0; j < w; j++){
if (s[j] == '\\' || s[j] == '/') {
amount++;
in = !in;
}
else if (in) area++;
}
}
cout << area+amount/2 << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: