WA 90pts On #2 求助
  • 板块P2027 bf
  • 楼主wmy18929355137
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/9/7 00:13
  • 上次更新2024/9/7 11:16:38
查看原帖
WA 90pts On #2 求助
723036
wmy18929355137楼主2024/9/7 00:13

输入改成getchar了,还是wa了个点 求dalao来看看 record


Code:

#include <bits/stdc++.h>
using namespace std;

string cd,buf;
int mem[30005],ptr = 0,res = 0; 
int pa[30005];

void op(int &i) {
	if (cd[i] == '<') {
		ptr--;
	} else if (cd[i] == '>') {
		ptr++;
	}  else if (cd[i] == '+') {
		mem[ptr]++;
	} else if (cd[i] == '-') {
		mem[ptr]--;
	} else if (cd[i] == '.') {
		cout << (char)(mem[ptr]);
	} else if (cd[i] == ',') {
		if (buf.size() == 0) {
			mem[ptr] = -1;
		} else {
			mem[ptr] = buf[0];
			buf = buf.substr(1);
		}
	} else if (cd[i] == '[') {
		int pos = pa[i];
		while (mem[ptr] != 0) {
			for (int j = i + 1; j < pos; j++) {
				op(j);
			}
		}
		i = pos;
	}
}

int main() {
	char c;
	while (1) {
		c = getchar();
		if (c != '$') {
			cd += (c);
		} else {
			break;
		}
	}
	getchar();
	while (1) {
		c = getchar();
		if (c != ' ') {
			buf += (c);
		} else {
			break;
		}
	}
	getchar();
	//cout << cd << "EOF\n";
	//cout << buf << "EOF\n";
	stack <int> st;
	for (int i = 0; i < cd.size(); i++) {
		if (cd[i] == '[') {
			st.push(i);
		} else if (cd[i] == ']') {
			pa[st.top()] = i;
			st.pop();
		}
	}
	for (int i = 0; i < cd.size(); i++) {
		op(i);
	}
	return 0;
}
2024/9/7 00:13
加载中...