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;
}
正文: