首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

杭电oj做题时出现超出时间限制.上代码.求教育!解决方案

2013-04-21 
杭电oj做题时出现超出时间限制..上代码..求教育!#includestdio.h#includemath.hint main(){int a[50][

杭电oj做题时出现超出时间限制..上代码..求教育!
#include<stdio.h>
#include<math.h>
int main()
{   


int a[50][4]={0};
int i=0,k;
    double s=0.0;
  
while(scanf("%d %d %d %d",&a[i][0],&a[i][1],&a[i][2],&a[i][3])!=EOF)
      ++i;
    
for(k=0;k<i;k++)
{s=(a[k][0]-a[k][2])*(a[k][0]-a[k][2])+(a[k][1]-a[k][3])*(a[k][1]-a[k][4]);
        printf("%0.2f\n",sqrt(s));
}
return 0;
}


math.h
[解决办法]
它没告诉你数据共有多少组。。你怎么知道是50?试下这个


#include<stdio.h>
#include<math.h>
int main()
{   


int a[4]={0};
int i=0;
    double s=0.0;
  
while(scanf("%d %d %d %d",&a[0],&a[1],&a[2],&a[3])!=EOF)
{
    
s=(a[0]-a[2])*(a[0]-a[2])+(a[1]-a[k][3])*(a[1]-a[4]);
        printf("%0.2f\n",sqrt(s));

}
return 0;
}

[解决办法]
昏。。

输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开。

把int a[4]改成double a[4],scanf改成%lf
[解决办法]
    int nNum = 0;
    printf("请输入组数:");
    scanf("%d" ,&nNum);
    if (nNum > 0)
    {
        double *pData = (double*)malloc (4*nNum*sizeof(double));
        for (int i = 0; i < 4*nNum; i+=4)
        {
            printf("请输入第%d组数据:" ,i/4+1);
            scanf("%lf %lf %lf %lf" ,&pData[i] ,&pData[i+1] ,&pData[i+2] ,&pData[i+3] );
        }
        for (int i = 0; i < 4*nNum; i+=4)
        {
            printf("%f\n" ,sqrt(pow(pData[i+2] - pData[i] ,2) + pow(pData[i+3] - pData[i+1] ,2)));
        }
        free (pData);
    }

热点排行