#include<stdio.h>#include<string.h>#include<math.h>#include<iostream>#include<algorithm>using namespace std;struct node{int hour,minute; //时针和分针位置double angle_hour,angle_minute,angle_sum; //时针,分针,总角度int time;}angle[7];bool cmp(node x,node y) //sort的正确使用{if(x.angle_sum==y.angle_sum){return x.time <y.time ; //升序排列}else return x.angle_sum <y.angle_sum ; //升序排列}int main(){int times,i;scanf("%d",×);while(times--){for(i=0;i<5;i++){scanf("%d:%d",&angle[i].hour,&angle[i].minute);angle[i].angle_hour=(angle[i].hour%12)*30+angle[i].minute*0.5;//时针与12的顺时针夹角angle[i].angle_minute=angle[i].minute*6.0;//分针和12的顺时针夹角angle[i].angle_sum=fabs(angle[i].angle_hour-angle[i].angle_minute);//做差可以得到夹角,但不确定是不是锐角或平角,于是。。if(angle[i].angle_sum>180) angle[i].angle_sum=360-angle[i].angle_sum;//确定角,然后变成锐角或者平角angle[i].time=angle[i].hour*60+angle[i].minute; //我分别用hour和minute比较,但是WA了,于是就用hour+minute,A了。}sort(angle,angle+5,cmp);printf("%02d:%02d\n",angle[2].hour,angle[2].minute);}return 0;}
hdu 1029
最新推荐文章于 2024-07-22 15:30:00 发布
本文介绍了一种解决时钟上时针与分针角度问题的C++程序设计方法,通过计算不同时间点的角度并进行排序,找出特定条件下的最优解。

544

被折叠的 条评论
为什么被折叠?



