给你一个多边形(用’\’和’/’表示多边形的边),求多边形的面积。

4 4 /\/\../ .\...\/
8
/\/\ // 对于该行第一字符就是‘/’,说明这是左边,第四个字符‘\’是右边, 该行的面积是:半个+半个+半个+半个
\../ // 该行的面积是:半个+1个+1个+半个
.\.\ // 该行的面积是:0 + 半个+1个+半个
..\/ // 该行的面积是:0 + 0 +半个+半个
(4)最后边个的总数别忘了除2 !
代码如下:
#include <iostream>
#include <string>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
char map[200][200];
int main()
{
int n, m;
int i, j, k;
int dd;
int bn, zh, area;
while(scanf("%d %d", &n, &m)!=EOF)
{
for(i=0; i<n; i++)
{
scanf("%s", map[i] );
}
bn=0;
zh=0;
area=0;
for(i=0; i<n; i++)
{
j=0;
while(map[i][j]==‘.‘ && j<m )
{
j++;
}
if(j==m-1)
{
continue;
}
dd=m-1;
while(map[i][dd]==‘.‘ && dd>=0 )
{
dd--;
}
for(k=j; k<=dd; k++)
{
if(map[i][k]==47 || map[i][k]==92 )
{
bn++;
}
else
{
zh++;
}
}
}
area=bn/2+zh;
cout<<area<<endl;
}
return 0;
}
原文:http://www.cnblogs.com/yspworld/p/4087893.html