现在的位置: 首页 > 综合 > 正文

hdu1866

2013年10月20日 ⁄ 综合 ⁄ 共 962字 ⁄ 字号 评论关闭

/*
分析:
    有点儿无语了。。。这读入可能有空格呀什么的,所以不能用
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;
}

抱歉!评论已关闭.