PTA值班安排(循环结构)

医院有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<C1 表示:A大夫比C大夫晚1天值班
格式2:编号 = 数值
例如:F=4 表示:F大夫在星期四值班

输出格式:

输出周一至周日的值班序列。

输入样例:

7
A<C1
D<E1
E>B2
B>G4
F<B1
F>C1
F=4

输出样例:

EDBFCAG

#include<stdio.h>
#include<string.h>
char d1[10],d2[10],op[10];
int num[10];
void arrange(char* table,int n);
void read(char* str,char* table,int i)
{
    int l=strlen(str);
    d1[i]=str[0];
    op[i]=str[1];
    if(l==3)
    {
        num[i]=str[2]-'0';
        table[num[i]]=d1[i];
    }
    else
    {
        num[i]=str[3]-'0';
        d2[i]=str[2];
    }
    return;
}
int main()
{
    int n;
    scanf("%d",&n);
    char table[20];
    char str[5];
    for(int i=0;i<20;i++)table[i]='0';
    for(int i=1;i<=n;i++)
    {
        //getchar();
        scanf("%s",str);
        read(str,table,i);
    }

    arrange(table,n);
    for(int i=1;i<=7;i++)
        printf("%c",table[i]);
    return 0;
}
void arrange(char* table,int n)
{
    for(int k=1;k<=n;k++)
    {
        int cnt=0;
        for(int j=1;j<=7;j++)
        {
            if(table[j]!='0')
            {
                for(int i=1;i<=n;i++)
                {
                    if(d1[i]==table[j])
                    {
                        if(op[i]=='<')
                        table[j-num[i]]=d2[i];
                        else if(op[i]=='>')
                        table[j+num[i]]=d2[i];
                    }
                    else if(d2[i]==table[j])
                    {
                        if(op[i]=='<')
                        table[j+num[i]]=d1[i];
                        else if(op[i]=='>')
                        table[j-num[i]]=d1[i];
                    }
                }
            }
            else cnt+=1;
        }
        if(cnt==0)break;
    }
    return;
}

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集 PTA-数据结构算法题目集

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值