如何用c语言进行求解

img

img


输入样例:
在这里给出一组输入。例如:


9
S->MH 
S->a 
H->LSo
H->@ 
K->dML
K->@ 
L->eHf
M->K
M->bLM

输出样例:
在这里给出相应的输出。例如:


S-1
H-1
K-1
L-0
M-1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAXN 100
#define MAXLEN 10

int n;
char left[MAXN];
char right[MAXN][MAXLEN];
int empty[MAXN];

int find(char c) {
    for (int i = 0; i < n; i++) {
        if (left[i] == c) {
            return i;
        }
    }
    return -1;
}

int main() {
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        scanf("%s", left + i);
        scanf("%s", right[i]);
        empty[i] = 0;
    }
    int flag = 1;
    while (flag) {
        flag = 0;
        for (int i = 0; i < n; i++) {
            if (empty[i]) {
                continue;
            }
            int len = strlen(right[i]);
            int j;
            for (j = 0; j < len; j++) {
                if (right[i][j] >= 'A' && right[i][j] <= 'Z') {
                    int k = find(right[i][j]);
                    if (!empty[k]) {
                        break;
                    }
                } else {
                    break;
                }
            }
            if (j == len) {
                empty[i] = 1;
                flag = 1;
            }
        }
    }
    for (int i = 0; i < n; i++) {
        printf("%c-%d\n", left[i], empty[i]);
    }
    return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632