#include <stdio.h>

int main() { int schedule[7]; // 存放值班表 int i; for(i = 0; i < 7; i++) { schedule[i] = i + 1; // 初始化值班表 }

// 输入条件
int n;
scanf("%d", &n);
while(n--) {
    char a, b, op;
    int days;
    scanf(" %c %c %c %d", &a, &op, &b, &days);
    if(op == '>') { // a比b晚days天值班
        int diff = days % 7; // 处理天数大于一周的情况
        for(i = 0; i < 7; i++) {
            if(schedule[i] == b) { // 找到b的值班日期
                int j = (i + diff) % 7; // 计算a的值班日期
                while(schedule[j] != a) { // 如果a的值班日期与其他大夫冲突则继续往后找
                    j = (j + 1) % 7;
                }
                schedule[j] = schedule[i]; // 将b的值班日期赋给a
                break;
            }
        }
    } else if(op == '<') { // b比a晚days天值班,与上面类似
        int diff = days % 7;
        for(i = 0; i < 7; i++) {
            if(schedule[i] == a) {
                int j = (i + diff) % 7;
                while(schedule[j] != b) {
                    j = (j + 1) % 7;
                }
                schedule[j] = schedule[i];
                break;
            }
        }
    } else { // a在星期days值班
        schedule[days-1] = a - 'A' + 1; // 将a的编号转换成序号赋给对应的值班日期
    }
}

// 输出值班表
printf("周一: %c\n", schedule[0] + 'A' - 1);
printf("周二: %c\n", schedule[1] + 'A' - 1);
printf("周三: %c\n", schedule[2] + 'A' - 1);
printf("周四: %c\n", schedule[3] + 'A' - 1);
printf("周五: %c\n", schedule[4] + 'A' - 1);
printf("周六: %c\n", schedule[5] + 'A' - 1);
printf("周日: %c\n", schedule[6] + 'A' - 1);

return 0;

原文地址: https://www.cveoy.top/t/topic/fDPf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录