#include <bits/stdc++.h>
using namespace std;
int main(){
int n,k;
cin>>n>>k;
map <char,pair<int,int>> vis;
vis['f']={0,1};
vis['b']={0,-1};
vis['l']={-1,0};
vis['r']={1,0};
while(k--){
string opts;
int x,y,dx,dy;
cin>>x>>y>>opts;
for(const auto& opt:opts){
dx = vis[opt].first;
dy = vis[opt].second;
if (1 <= x + dx && x + dx <= n)
x += dx;
if (1 <= y + dy && y + dy <= n)
y += dy;
}
cout << x << " " << y << endl;
}
return 0;
}
题目
参考如下解法
CCF CSP2024年12月题解_ccf2024 12 第一题移动答案-优快云博客
补充:
pair用法
1.初始化构造
(1) 默认构造:
pair<int, double> p;
p.first = 10;
p.second = 3.14;
(2) 参数化构造:
pair<int, int> p(0, 1);
(3) 使用花括号:
pair<int, int> p = {0, 1};
2.访问
p.first p.second
3.排序
可以用sort,并且可以自定义cmp比较函数
4.打包解包
(1)打包:make_pair可以方便地创建一个 pair,不需要显式指定类型。
auto p=make_pair(10,3.14);
(2)解包:tie可以将 pair 或其他元组类型的成员绑定到变量上。
pair<int, double> p = {10, 3.14};
tie(a,b)=p;