设为首页 加入收藏

TOP

HDU1029时钟(排序)
2015-11-21 01:27:06 来源: 作者: 【 】 浏览:6
Tags:HDU1029时钟 排序

题意:是用两个指针的一个模拟时钟的时针和分针。两个指针形成一个角度。角度测量两个指针之间的最小角度。两只手之间的角度是大于或等于0,且小于或等于180度的度量。由于一个序列的五个不同的写入时间,格式为hh:mm,其中......是两个数字较完整的24小时( 00 <= ...... <= 23)和mm(00 <=毫米<= 59),你发现的中位数,也就是写一个程序,第三个元素的排序序列在两个数字代表分钟非递减顺序及其关联的角度。例如,假设您将得到一个序列(06:05,07:10,03:00,21:00,下午12:55)次。关系被打破这样一种方式,一个较早的时间排在稍后的时间之前。因为排序的序列(12:55,03:00,21:00,06:05,07:10),你输出的是21:00。

http://acm.hdu.edu.cn/showproblem.php?pid=1209


题解:排序;

错误分析:1:小时和分钟不一定是整10或5;

?? 2:时针随着分针的变化而变化;所以时针与12的角度为angle=(hh+mm/60)*30;

?? 3:输出格式可以用printf("%02d%02d",time[2].hh,time[2].mm);

? 上网搜了一个解题报告看到了这种数出格式,然后就试了一下,发现比我写的


?

 if(time[2].hh<10) 
        printf("0%d",time[2].hh); 
        else 
        printf("%d",time[2].hh); 
        if(time[2].mm<10) 
        printf(":0%d\n",time[2].mm); 
        else 
        printf(":%d\n",time[2].mm); 

if(time[2].hh<10)
        printf("0%d",time[2].hh);
        else
        printf("%d",time[2].hh);
        if(time[2].mm<10)
        printf(":0%d\n",time[2].mm);
        else
        printf(":%d\n",time[2].mm);

好用多了,然后就百度一下解释:


2是宽度很简单。如果整数不够2列就补上0
比如
printf("%02d" ,3);

结果就是
03
如果大于2没有影响
printf("%02d",1234);
1234


代码实现


?

#include  
#include  
#include  
using namespace std; 
typedef struct clock 
{ 
    int hh; 
    int mm; 
    double angle; 
}clock; 
clock time[6]; 
bool cmp( clock x1,clock x2 )//比较  
{ 
    if(x1.angle==x2.angle) 
    { 
        if(x1.hh==x2.hh) 
        return(x1.mm180)angle3=360.0-angle3; 
            time[i].angle=angle3; 
        } 
        sort(time,time+5,cmp);//排序  
        printf("%02d:%02d\n",time[2].hh,time[2].mm); 
    } 
 
    return 0; 
} 

#include
#include
#include
using namespace std;
typedef struct clock
{
    int hh;
    int mm;
    double angle;
}clock;
clock time[6];
bool cmp( clock x1,clock x2 )//比较
{
    if(x1.angle==x2.angle)
    {
        if(x1.hh==x2.hh)
        return(x1.mm180)angle3=360.0-angle3;
            time[i].angle=angle3;
        }
        sort(time,time+5,cmp);//排序
        printf("%02d:%02d\n",time[2].hh,time[2].mm);
    }

    return 0;
}


排序的相关题目


HDU1029 Ignatius and the Princess IV

?

代码


?

#include  
#include  
#define MAX 1000000  
using namespace std; 
int a[MAX]; 
int main() 
{ 
    int i,n; 
    while(scanf("%d",&n)!=EOF) 
    { 
        for(i=0;i
#include
#define MAX 1000000
using namespace std;
int a[MAX];
int main()
{
    int i,n;
    while(scanf("%d",&n)!=EOF)
    {
        for(i=0;i 
 

HDU2673shǎ崽 OrOrOrOrz
?

?

#include  
#include  
using namespace std; 
int a[10005]; 
int main() 
{ 
    int n; 
    while(scanf("%d",&n)!=EOF) 
    { 
        for(int i=0;i
#include
using namespace std;
int a[10005];
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        for(int i=0;i 
 

HDU1280前m大的数

?

#include  
#include  
#include  
using namespace std; 
bool mysort(int x,int y) 
{ 
    return(x>y); 
} 
int b[45000000]; 
int main() 
{ 
    int i,j,k,n,m,a[3002]; 
    while(scanf("%d %d",&n,&m)!=EOF) 
    { 
        k=0; 
       for(i=0;i
#include
#include
using namespace std;
bool mysort(int x,int y)
{
    return(x>y);
}
int b[45000000];
int main()
{
    int i,j,k,n,m,a[3002];
    while(scanf("%d %d",&n,&m)!=EOF)
    {
        k=0;
       for(i=0;i 
 

?

?

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇面试题16:树的子结构 下一篇面试题6:用两个栈实现队列

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: