cin >> n >> m >> size; //轨道里的元素用queue存储 queue<char> q[105]; for (int i = 1; i <= n; i++) { getchar(); for (int j = 0; j < m; j++) { char c = getchar(); q[i].push(c); } }
int button; //筐里的元素用stack存储 stack<char> s; string ans; //简单的模拟 while (cin >> button && button != -1) { if (button == 0) { //筐是空的,按 0 号按钮不会发生任何事。 //所以当筐不为空才执行。 if (!s.empty()) { char c = s.top(); s.pop(); ans += c; } } else { //轨道已经空了,再按对应的按钮不会发生任何事 //所以当轨道不为空,才执行 if (!q[button].empty()) { //筐满,强制启动 0 号键 if (s.size() == size) { char c = s.top(); s.pop(); ans += c; } char c = q[button].front(); q[button].pop(); s.push(c); } } }