请教浙大ACM 2680题 哪里错了 谢谢~!
#include<stdio.h>#include<math.h>inta[6][2];intb[6];intmain(){inti,j,t,q;inth,s,tmp;s...
#include<stdio.h>
#include<math.h>
int a[6][2];
int b[6];
int main()
{
int i,j,t,q;
int h,s,tmp;
scanf("%d",&t);
while(t--)
{
for(i=1;i<=5;i++)
{
scanf("%d:%d",&a[i][0],&a[i][1]);
q=a[i][0];
if(a[i][0]>12)
q=a[i][0]-12;
h=(q+a[i][1]/60)*360/12;
s=360*a[i][1]/60;
if(abs(h-s)>180)
b[i]=abs(360-abs(h-s));
else
b[i]=abs(h-s);
}
for(i=1;i<6;i++)
{
for(j=i+1;j<6;j++)
{
if(b[i]>=b[j])
{
tmp=b[i];
b[i]=b[j];
b[j]=tmp;
tmp=a[i][0];
a[i][0]=a[j][0];
a[j][0]=tmp;
tmp=a[i][1];
a[i][1]=a[j][1];
a[j][1]=tmp;
}
}
}
for(i=1;i<6;i++)
{
for(j=i+1;j<6;j++)
{
if(b[i]==b[j])
{
if(a[i][0]>a[j][0])
{
tmp=a[i][0];
a[i][0]=a[j][0];
a[j][0]=tmp;
tmp=a[i][1];
a[i][1]=a[j][1];
a[j][1]=tmp;
}
}
}
}
printf("%02d:%02d\n",a[3][0],a[3][1]);
}
return 0;
}
我的代码~! 测试实例通过~!就不AC~!
题目地址:http://acm.zju.edu.cn/show_problem.php?pid=2680 展开
#include<math.h>
int a[6][2];
int b[6];
int main()
{
int i,j,t,q;
int h,s,tmp;
scanf("%d",&t);
while(t--)
{
for(i=1;i<=5;i++)
{
scanf("%d:%d",&a[i][0],&a[i][1]);
q=a[i][0];
if(a[i][0]>12)
q=a[i][0]-12;
h=(q+a[i][1]/60)*360/12;
s=360*a[i][1]/60;
if(abs(h-s)>180)
b[i]=abs(360-abs(h-s));
else
b[i]=abs(h-s);
}
for(i=1;i<6;i++)
{
for(j=i+1;j<6;j++)
{
if(b[i]>=b[j])
{
tmp=b[i];
b[i]=b[j];
b[j]=tmp;
tmp=a[i][0];
a[i][0]=a[j][0];
a[j][0]=tmp;
tmp=a[i][1];
a[i][1]=a[j][1];
a[j][1]=tmp;
}
}
}
for(i=1;i<6;i++)
{
for(j=i+1;j<6;j++)
{
if(b[i]==b[j])
{
if(a[i][0]>a[j][0])
{
tmp=a[i][0];
a[i][0]=a[j][0];
a[j][0]=tmp;
tmp=a[i][1];
a[i][1]=a[j][1];
a[j][1]=tmp;
}
}
}
}
printf("%02d:%02d\n",a[3][0],a[3][1]);
}
return 0;
}
我的代码~! 测试实例通过~!就不AC~!
题目地址:http://acm.zju.edu.cn/show_problem.php?pid=2680 展开
展开全部
#include <stdio.h>
#include <math.h>
struct Time
{
int h;
int m;
double degree;
void calc_degree();
}
time[5];
void Time::calc_degree()
{
int tmp=h;
if(tmp>12)
tmp-=12;
degree=fabs((double)tmp*30+(double)m/60*30-(double)m/60*360);
if(degree>180)
degree=360-degree;
return ;
}
bool early(Time & a,Time & b)
{
if(a.h<b.h || (a.h==b.h && a.m<b.m))
return true;
return false;
}
void Sort()
{
int i,j;
for(i=0;i<4;i++)
{
for(j=i+1;j<5;j++)
{
if(time[i].degree>time[j].degree+0.000001 || (fabs(time[i].degree-time[j].degree)<0.000001 && early(time[j],time[i])))
{
Time tmp=time[i];
time[i]=time[j];
time[j]=tmp;
}
}
}
return ;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int i;
for(i=0;i<5;i++)
{
scanf("%d:%d",&time[i].h,&time[i].m);
time[i].calc_degree();
//printf("%lf\n",time[i].degree);
}
Sort();
printf("%02d:%02d\n",time[2].h,time[2].m);
}
return 0;
}
主意误差,看我代码中的0.000001
#include <math.h>
struct Time
{
int h;
int m;
double degree;
void calc_degree();
}
time[5];
void Time::calc_degree()
{
int tmp=h;
if(tmp>12)
tmp-=12;
degree=fabs((double)tmp*30+(double)m/60*30-(double)m/60*360);
if(degree>180)
degree=360-degree;
return ;
}
bool early(Time & a,Time & b)
{
if(a.h<b.h || (a.h==b.h && a.m<b.m))
return true;
return false;
}
void Sort()
{
int i,j;
for(i=0;i<4;i++)
{
for(j=i+1;j<5;j++)
{
if(time[i].degree>time[j].degree+0.000001 || (fabs(time[i].degree-time[j].degree)<0.000001 && early(time[j],time[i])))
{
Time tmp=time[i];
time[i]=time[j];
time[j]=tmp;
}
}
}
return ;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int i;
for(i=0;i<5;i++)
{
scanf("%d:%d",&time[i].h,&time[i].m);
time[i].calc_degree();
//printf("%lf\n",time[i].degree);
}
Sort();
printf("%02d:%02d\n",time[2].h,time[2].m);
}
return 0;
}
主意误差,看我代码中的0.000001
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询