题目大意就是,先给一个n*m的地图,给其中k个点分别给出他们的初始位置和目标位置,要求在2mn步内操作让每个位置都去过一次他的目标位置,对于这道题,顺着他的思路想是很难解决问题的,但是我们观察2mn这个条件,发现我们可以操作很多次,于是乎,我们只要让每个点都去过所有位置,就可以保证条件一定满足,所以我们先把所有棋子移动到1-1,然后按顺序遍历整个地图,即可保证一定满足要求
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a;
int m,n;
cin>>n>>m;
for(int i=1;i<n;i++)a+='U';
for(int i=1;i<m;i++)a+='R';
for(int i=1;i<=n;i++)
{
for(int j=1;j<m;j++)
{ if(i%2)a+='L';
else a+='R';
}
a+='D';
}
cout << a.size() << endl;
cout << a << endl;
return 0;
}
代码也很简单