#include <cstdio>
#include <iostream>
#include <vector>
using namespace std;
int a, b, to;
char s[110][10];
char p[10];
int get(char ch) {
for (int i = 0; i < b; i++) {
if (p[i] == ch) return i;
}
return -1;
}
int use(int x, char ch) {
for (int i = x; i < a; i++) {
if (s[i][3] == ch || s[i][5] == ch) return i;
}
return a;
}
int find(int x) {
if (to < b) return to++;
int ans = -1, w = -1;
for (int i = 0; i < b; i++) {
int v = use(x, p[i]);
if (v > w) {
w = v;
ans = i;
}
}
return ans;
}
void print1(char ch) {
if (ch == '+') printf("ADD ");
if (ch == '-') printf("SUB ");
if (ch == '*') printf("MUL ");
if (ch == '\\') printf("DIV ");
}
void print2(char ch) {
int x = get(ch);
if (x != -1) {
printf("R%d\n", x);
} else {
printf("%c\n", ch);
}
}
int main() {
cin >> a >> b;
for (int i = 0; i < a; i++) {
cin >> s[i];
}
for (int i = 0; i < a; i++) {
int x = get(s[i][3]);
if (x == -1) {
x = find(i);
if (p[x] != '\0' && use(i, p[x]) < a) {
printf("ST R%d, %c\n", x, p[x]);
p[x] = NULL;
}
printf("LD R%d, %c\n", x, s[i][3]);
}
print1(s[i][4]);
printf("R%d, ", x);
print2(s[i][5]);
p[x] = s[i][0];
}
return 0;
}
P 简单的代码生成程序
最新推荐文章于 2021-05-28 19:45:23 发布