首页 > 移动撤销
头像 (́安◞౪◟排‵)
发表于 2020-11-30 18:09:10
x,y数组存储之前在哪个位置now存储目前位于哪个版本对于wasd直接now++后更新对于z直接now--回退到上一个版本(注意判断now>0) #include<bits/stdc++.h> using namespace std; int n,now; int x[100005 展开全文
头像 LavenderPikachu
发表于 2020-11-29 21:38:12
//用栈模拟操作#include<bits/stdc++.h>using namespace std;string str = "";//对z作出处理后的最后移动方式stack<char>st;int n;int main(){ cin >> n; c 展开全文
头像 AB-IN
发表于 2020-11-30 13:05:04
B. 移动撤销 栈的操作,当进栈时 而且 栈不为空时,就将栈顶的元素弹出,之后就模拟栈里的元素即可。 #include<bits/stdc++.h> using namespace std; string s; int n; #define IOS ios::sync_with_std 展开全文
头像 可爱的小萌新~
发表于 2020-12-19 18:11:48
依照题意,由于需要回退上一次操作,可以使用一个队列记录之前已经进行的操作。在遇到Z操作时取出上一个操作进行撤销,并把它从队列中取出 #include<cstdio> using namespace std; int n,x,y,cnt; char ch[100005]; struct n 展开全文
头像 BNDSBilly
发表于 2020-12-01 09:31:38
思路:栈 + 模拟 将所有操作对应的字符压栈,每次遇到撤销操作 时,判断栈是否为空,若不为空则弹出栈顶元素,相当于撤销一次操作,若为空则不做操作。由于四种操作都单独在 轴或单独在 轴上移动,所以与操作顺序无关,依次从栈里弹出操作并依次执行即可。 代码: #include <bits/st 展开全文