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

那位高手帮我分析下代码!不怎么懂! 1211 traffic lights

Posted by shenhaodong at 2006-07-17 17:27:58
#include <stdio.h> 
#define MAXTIME 18000 
int p[100]; 
int n, flag; 
int Input() 
{ 
    int time; 
    scanf("%d", &time); 
    if(time == 0) return 0; 
    for(n = 0; time > 0;) 
    { 
        p[n++] = time; 
        scanf("%d", &time); 
    } 
    return 1;    
} 
void Solve() 
{ 
    int i, j, min; 
    for(min = p[0], i = 0; i < n; i++)      // 找到一个最小值,因为间隔至少要从最小值的2倍开始计算 
        if(min > p[i]) 
            min = p[i]; 
    min *= 2; 
    for(flag = 0; (min <= MAXTIME) && !flag;) 
    { 
        for(flag = 1, i = 0; i < n; i++) 
        { 
            j = min%(2*p[i]);              // 同样min看看对其余p的两倍的模 
            if(j >= p[i]-5)                // 落在黄灯时间段,也是不行的 
            { 
                flag = 0; 
                min += 2*p[i]-j; 
            } 
            if(min > MAXTIME)break;   
        }     
    } 
    if(min > MAXTIME)printf("Signals fail to synchronise in 5 hours\n"); 
    else             printf("%02d:%02d:%02d\n",min/3600,(min/60)%60,min%60); 
} 
    
int main() 
{ 
#if 0 
    freopen("f.in", "r", stdin); 
    freopen("t.out", "w", stdout); 
#endif 
    while( Input() ) Solve(); 
    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