早教吧作业答案频道 -->其他-->
5.值班安排医院有A、B、C、D、E、F、G7位大夫,在一星期内(星期一至星期天)每人要轮流值班一天,如果已知:(1)A大夫比C大夫晚1天值班;(2)D大夫比E大夫晚1天值班;(3)E大夫比B
题目详情
5.值班安排
医院有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 格式2:编号 = 数值
例如:F=4 表示:F大夫在星期四值班
输入输出示例
7
A D E>B2
B>G4
F F>C1
F=4
EDBFCAG
医院有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
例如:F=4 表示:F大夫在星期四值班
输入输出示例
7
A
B>G4
F
F=4
EDBFCAG
▼优质解答
答案和解析
#include"stdlib.h"
#include
#include
#define MAX 7
int map[MAX][MAX]={0};
int pos[MAX];
void DFS(int r,int n)
{
int i;
for(i=0;i {
if(pos[i]>-1||map[r][i]==0)continue;
pos[i]=map[r][i]+pos[r];
DFS(i,n);
}
}
int main()
{
int n,i,a,b;
char cmd[100];
while(scanf("%d",&n)!=EOF)
{
memset(pos,-1,sizeof(pos));
memset(map,0,sizeof(map));
for(i=0;i {
scanf("%s",cmd);
if(cmd[1]=='=')
{
pos[cmd[0]-'A']=cmd[2]-'1';
}
else
{
a=cmd[0]-'A';
b=cmd[2]-'A';
if(cmd[1]==' {
map[a][b]=-(cmd[3]-'0');
map[b][a]=-map[a][b];
}
else
{
map[b][a]=-(cmd[3]-'0');
map[a][b]=-map[b][a];
}
}
}
for(i=0;i {
if(pos[i]>-1)DFS(i,MAX);
}
//for(i=0;i for(i=0;i {
for(b=0;b {
if(pos[b]==i)
{
putchar(b+'A');
}
}
}
puts("");
}
return 0;
}
#include
#include
#define MAX 7
int map[MAX][MAX]={0};
int pos[MAX];
void DFS(int r,int n)
{
int i;
for(i=0;i
if(pos[i]>-1||map[r][i]==0)continue;
pos[i]=map[r][i]+pos[r];
DFS(i,n);
}
}
int main()
{
int n,i,a,b;
char cmd[100];
while(scanf("%d",&n)!=EOF)
{
memset(pos,-1,sizeof(pos));
memset(map,0,sizeof(map));
for(i=0;i
scanf("%s",cmd);
if(cmd[1]=='=')
{
pos[cmd[0]-'A']=cmd[2]-'1';
}
else
{
a=cmd[0]-'A';
b=cmd[2]-'A';
if(cmd[1]==' {
map[a][b]=-(cmd[3]-'0');
map[b][a]=-map[a][b];
}
else
{
map[b][a]=-(cmd[3]-'0');
map[a][b]=-map[b][a];
}
}
}
for(i=0;i
if(pos[i]>-1)DFS(i,MAX);
}
//for(i=0;i
for(b=0;b
if(pos[b]==i)
{
putchar(b+'A');
}
}
}
puts("");
}
return 0;
}
看了 5.值班安排医院有A、B、C...的网友还看了以下:
雄关!这固若金汤的雄关!这“一夫当关,万夫莫开”的雄关!仿写上面三句话,怎么仿写啊?这固若金汤的雄 2020-06-05 …
急求问一首古诗词,每一句都是分别由一二三四五六等数字为第一个字的诗词,是个才女写的,好像是与丈夫长 2020-06-05 …
“一带一路”铸就辉煌新闻视角,央视新闻联播从2015年4月4日起推出系列报道《一带一路共建繁荣》第 2020-06-25 …
某人用锤子敲打一物体,每一秒敲两下.另一个人恰在看到他举锤到最高点时听到声音.某人用锤子敲打一物体 2020-06-27 …
有10对夫妇共20人,参加一次圣诞晚会,其中每位男宾与其他每一个人握手一次(他夫人除外),女宾与女 2020-07-21 …
请数学高手回答,要一元一次方程某学校组织学生到100千米外的地方夏令营,汽车只能坐一半的人,另一半 2020-08-03 …
帮个忙猜下字谜啦一点一横长,一撇向西方,并排两棵树,栽在石头上.()左看马靠它,右看它靠马,两边一起 2020-11-07 …
(2008•遵义)某学校在开展“节约每一滴水”的活动中,从七年级的180名同学中任选出十名同学汇报了 2020-11-13 …
每一只小狗都有一个目标①有一对夫妇,有两个孩子,这对夫妇决定为孩子养一只小狗。小狗抱回来以后,他们就 2020-11-25 …
阅读下文,完成问题。每一只小狗都有一个目标①有一对夫妇,有两个孩子,这对夫妇决定为孩子养一只小狗。小 2020-11-25 …