早教吧 育儿知识 作业答案 考试题库 百科 知识分享

c语言程序ABCDEFG七位医生排班班安排一、实验内容与要求医院有A、B、C、D、E、F、G7位大夫,在一星期内(星期一至星期天)每人要轮流值班一天,如果已知:(1)A大夫比C大夫晚1天值班

题目详情
c语言程序 ABCDEFG七位医生排班
班安排
一、实验内容与要求
医院有A、B、C、D、E、F、G 7位大夫,在一星期内(星期一至星期天)每人要轮流值班一天,如果已知:
(1) A大夫比C大夫晚1天值班;
(2) D大夫比E大夫晚1天值班;
(3) E大夫比B大夫早2天值班
(4) B大夫比G大夫早4天值班;
(5) F大夫比B大夫晚1天值班;
(6) F大夫比C大夫早1天值班;
(7) F大夫星期四值班。
就可以确定周一至周日的值班人员分别为:E、D、B、F、C、A、G。
输入要求:先输入一个整数n,再输入n组条件,要求根据输入的条件能够确定唯一的值班表,且输入的n组条件中能够直接或间接得到任意两位大夫的关联关系,例如上面的条件(2)直接显示了D与E间的关系,而通过条件(1)、(6)、(5)可以间接得到A与B的关系。
条件输入格式有2种:
格式1:编号 比较运算符 编号 天数
其中比较运算符有2种: > 或 < ,分别表示“早”或“晚”
例如:A
▼优质解答
答案和解析
#include
#define NUM 26
#define DOCTOR_INIT -100
#define OBJECT_INIT -100
#define OFFSET_INIT -100
typedef struct Statement /*用来存储每一个语句object1存储第一个字母,2存储第二个,offset存储最后的数字*/
{
int object1;
int object2;
int offset;
};
void manage(struct Statement* statement,int* doctor,int n,int equal)
/*递归函数,处理刚才的输入*/
/*前三个参数是传递当前情况,第四个参数表示刚刚确定的那个doctor[],整次递归只处理刚刚确定的那一个*/
{
int i;
for(i=0;i