医生值班

来源:互联网 发布:犇犇网络 编辑:程序博客网 时间:2024/04/24 18:53
#include <iostream>using namespace std;int main(){enum weekday{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday};int a,b,c,d,e,f,g,i;char ch='A';int day[7];f=Thursday;for(a=Sunday;a<=Saturday;a++)       if(a!=f)  for(b=Sunday;b<=Saturday;b++)  if(b!=f&&b!=a&&f>b)for(c=Sunday;c<=Saturday;c++)if(c!=f&&c!=a&&c!=b&&(c+1)%7==a&&f<c)           for(d=Sunday;d<=Saturday;d++)             if(d!=f&&d!=a&&d!=b&&d!=c)          for(e=Sunday;e<=Saturday;e++)           if(e!=f&&e!=a&&e!=b&&e!=c&&(e+2)%7==d&&e!=d)              for(g=Sunday;g<=Saturday;g++)               if(g!=f&&g!=a&&g!=b&&g!=c&&g!=d&&g!=e&&(g-3)%7==b)   for(i=0;i<7;i++)   {day[0]=a;day[1]=b;day[2]=c;         day[3]=d;day[4]=e;day[5]=f;day[6]=g;   cout<<"Doctor "<<(char)(ch+i)<<" is on duty ";   switch((enum weekday)(day[i]))   {   case Sunday:cout<<"Sunday."<<endl;break;   case Monday:cout<<"Monday."<<endl;break;   case Tuesday:cout<<"Tuesday."<<endl;break;   case Wednesday:cout<<"Wednesday."<<endl;break;   case Thursday:cout<<"Thursday."<<endl;break;   case Friday:cout<<"Friday."<<endl;break;   case Saturday:cout<<"Saturday."<<endl;   }   }   return 0;}


Description
医院内科有A,B,C,D,E,F,G,H共七位医生,每人在一周内要值一次夜班,排班的要求是:
(1) A医生值班日比C医生晚1天
(2) D医生值班日比E医生晚2天
(3) B医生值班日比G医生早3天
(4) F医生的值班日在B医生和C医生的值班日之间,且是星期四
请编写程序,输出每位医生的值班日。值班日以Sunday, Monday ,Tuesday, Wednesday, Thurday, Friday, Saturday分别表示星期日到星期六。

Input

Output
每位医生的值班日

Sample Input
 

Sample Output
Doctor A is on duty Sunday.
Doctor B is on duty Tuesday.
Doctor C is on duty Saturday.
Doctor D is on duty Wednesday.
Doctor E is on duty Monday.
Doctor F is on duty Thursday.
Doctor G is on duty Friday.

0 0