妹子求注释,谢谢大神!

大夫值班问题:医院有A、B、C、D、E、F、G七位大夫,在一个星期内(星期一至星期天)
每天要轮流值班一天。现在已知:
A大夫比C大夫晚一天值班;
D大夫比E大夫晚两天值班;
B大夫比G大夫早三天值班;
F大夫的值班日在B和C大夫的中间,且是星期四;
请编程确定每天究竟哪位大夫值班?
**输出格式要求:"Doctor %c is on duty %s.\n"
程序运行示例如下:
Doctor E is on duty MONDAY.
Doctor B is on duty TUESDAY.
Doctor D is on duty WEDNESDAY.
Doctor F is on duty THURDAY.
Doctor G is on duty FRIDAY.
Doctor C is on duty STAURDAY.
Doctor A is on duty SUNDAY.
答案如下,求大神解析一下思路:
#include
int a[8];
char *day[]={               
    "","MONDAY","TUESDAY","WEDNESDAY","THURDAY",
       "FRIDAY","STAURDAY","SUNDAY"};
main()
{               
    int i,t,j;
    a[4]=6;
    for(i=1;i<=3;i++)
    {               
        a[i]=2;
        if(!a[i+3])
            a[i+3]=7;
        else
        {               
            a[i]=0;
            continue;
        }
        for(t=1;t<=3;t++)
        {               
            if(!a[t])
                a[t]=5;
            else
                continue;
            if(!a[t+2])
                a[t+2]=4;
            else
            {               
                a[t]=0;
                continue;
            }
            for(j=5;j<7;j++)
            {               
                if(!a[j])
                    a[j]=3;
                else
                    continue;
                if(!a[j+1])
                    a[j+1]=1;
                else
                {               
                    a[j]=0;
                    continue;
                }
                for(i=1;i<=7;i++)
                    printf("Doctor %c is on duty %s.\n",'A'+a[i]-1,day[i]);
                exit(0);
            }
        }
    }
}               

本来呢,就是要遍历所有情况,然后有种或者可能多种情况满足所有限制条件就是答案,然后根据限制条件提前去掉一些循环,比如ac捆绑的,就是这样。。。

一听说是妹子,我很想帮你,可我是玩c#的,所以,就来打打酱油咯