/*
分析:
有点儿无语了。。。这读入可能有空格呀什么的,所以不能用
scanf,得用gets,这个可以理解。
但是!!!我就弄不明白了,怎么主循环写成for(i=0;str[i];i++),
就WA,而必须写成“len=strlen(str);for(i=0;i<len;i++)”。ca了,有区
别么?WA了一个多小时,就试出来了这个。
这次真心不明白了,还请懂的牛牛留个言,谢谢了T^T
下面随便贴个代码。。。
2012-12-06
分析:
有点儿无语了。。。这读入可能有空格呀什么的,所以不能用
scanf,得用gets,这个可以理解。
但是!!!我就弄不明白了,怎么主循环写成for(i=0;str[i];i++),
就WA,而必须写成“len=strlen(str);for(i=0;i<len;i++)”。ca了,有区
别么?WA了一个多小时,就试出来了这个。
这次真心不明白了,还请懂的牛牛留个言,谢谢了T^T
下面随便贴个代码。。。
2012-12-06
*/
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
#include"ctype.h"
#define N 1011
int hash[N][N];
int min(int a,int b){
return a>b?b:a;
}
int max(int a,int b){
return a>b?a:b;
}
int main()
{
char str[511];
int a,b;
int i,l,k,sum,ans,d[5];
int minx,miny,maxx,maxy,mark1,len;
while(gets(str))
{
ans=0;
len=strlen(str);
memset(hash,0,sizeof(hash));
for(i=0;i<len;i++)
{
if(str[i]=='(')
{
k=0;sum=0;mark1=0;
for(l=i+1;k<4;l++)
{
if(isdigit(str[l])) {mark1=1;sum=sum*10+str[l]-'0';}
else if(mark1==0) continue;
else {d[k++]=sum;sum=0;mark1=0;}
}
i=l;
minx=d[0]>d[2]?d[2]:d[0];
miny=d[1]>d[3]?d[3]:d[1];
maxx=d[0]>d[2]?d[0]:d[2];
maxy=d[1]>d[3]?d[1]:d[3];
for(a=minx;a<maxx;a++)
for(b=miny;b<maxy;b++)
if(!hash[a][b]) {ans++;hash[a][b]=1;}
}
}
printf("%d\n",ans);
}
return 0;
}