Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

测试案例都通过,数组也开的够大了,怎么是Runtime Error啊?请教哪位高手啊!

Posted by 584349486 at 2010-07-30 16:13:58 on Problem 1408
#include<iostream>
#include<cmath>
using namespace std;
struct point
{
	double x;
	double y;
};
point bt[1000][1000];
point lr[1000][1000];
point save[1000][1000];
void init(int vertis)  //初始化 
{
	int i;
	    for(i=1;i<=vertis;i++)
	    {
			cin>>bt[i][0].x;
		}
		for(i=1;i<=vertis;i++)
		{
			cin>>bt[i][1].x;
		}
		for(i=1;i<=vertis;i++)
		{
			cin>>lr[i][0].y;
		}
		for(i=1;i<=vertis;i++)
		{
			cin>>lr[i][1].y;
			bt[i][0].y=0;
			bt[i][1].y=1;
			lr[i][0].x=0;
			lr[i][1].x=1;
		}
		save[0][0].x=save[0][0].y=save[0][vertis+1].x=save[vertis+1][0].y=0;
        save[0][vertis+1].y=save[vertis+1][vertis+1].x=save[vertis+1][vertis+1].y=save[vertis+1][0].x=1;
		for(i=1;i<=vertis;i++)
		{
			save[0][i]=lr[i][0];
			save[vertis+1][i]=lr[i][1];
			save[i][0]=bt[i][0];
			save[i][vertis+1]=bt[i][1];
		}
}
point coner(point p1,point p2,point p3,point p4)//求交点
{
	double A1=p2.y-p1.y;
	double B1=p1.x-p2.x;
	double C1=p1.y*(p2.x-p1.x)-p1.x*(p2.y-p1.y);
		
	double A2=p4.y-p3.y;
	double B2=p3.x-p4.x;
	double C2=p3.y*(p4.x-p3.x)-p3.x*(p4.y-p3.y);
	
	point P;	
	P.x=(C2*B1-C1*B2)/(A1*B2-A2*B1);
	P.y=(C2*A1-C1*A2)/(B1*A2-B2*A1);
	return P;
}
double area_polygon(point p1,point p2,point p3, point p4)//求面积
{
	point p[10];
	p[0]=p1;
	p[1]=p2;
	p[2]=p4;
	p[3]=p3;
	double s1=0,s2=0;
	int i;
	for (i=0;i<4;i++)
		s1+=p[(i+1)%4].y*p[i].x,s2+=p[(i+1)%4].y*p[(i+2)%4].x;
	return fabs(s1-s2)/2;
}
int main()
{
    int vertis,i,j,k;
	double mianji[100],max;
	while(cin>>vertis&&vertis!=0)
	{
             max=0;
	     k=0;
	     init(vertis);
	     for(i=1;i<=vertis;i++)
	         for(j=1;j<=vertis;j++)
                    save[i][j]=coner(bt[i][0],bt[i][1],lr[j][0],lr[j][1]);
	    for(i=0;i<=vertis;i++)
		 for(j=0;j<=vertis;j++)
		mianji[k++]=area_polygon(save[i][j],save[i][j+1],    save [i+1][j],save[i+1][j+1]);
             for(i=0;i<(vertis+1)*(vertis+1);i++)
		{
			if(max<mianji[i])
				max=mianji[i];
		}
		printf("%.6f\n",max);
	}
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator