哈哈,从来没想过还会再考一次 MX 的题……
T1
题面:


水到不能再水的题……大概就普及组第一题的难度。
代码自己写。
T2
题面:


注意题中的两个限制:
- 其中一部分字母在一条直线上,另一部分字母在另一条直线上。
- 两个方向形成一个直角拐弯。
如果这题就是一个单纯的找单词,那还真不好写,但有了这两条限制,我相信还是很容易写出正解的吧……
代码:
#include<bits/stdc++.h>
#define int long long
#define code using
#define by namespace
#define plh std
code by plh;
int n,m,len,ans,fx[8][2]={
1,0,0,-1,-1,0,0,1,1,1,-1,1,-1,-1,1,-1},b[8][2]={
1,3,0,2,1,3,0,2,5,7,4,6,5,7,4,6};
char mp[106][106];
string s;
void dfs(int x,int y,int id,int f,bool fl)
{
if(id==len-1)
{
ans++;
return;
}
int xx=x+fx[f][0],yy=y+fx[f][1];
if(xx<1||xx>n||yy<1||yy>m)
{
if(!fl&&id!=0)
{
dfs(x,y,id,b[f][0],1);
dfs(x,y,id,b[f][1],1);
}
return;
}
if(mp[xx][yy]!=s[id+1])
{
if(fl||id==0)
{
return;
}
dfs(x,y,id,b[f][0],1);
dfs(x,y,id,b[f][1],1);
}
else
{
dfs(xx,yy,id+1,f,fl);
if(fl||id==0)
{
return;
}
dfs(x,y,id,b[f][0],1);
dfs(x,y,id,b[f][1],1);
}
}
signed main()
{
// freopen("treasure.in","r",stdin);
// freopen("treasure.out","w",stdout);
cin>>s;
cin>>n>>m;
len=s.size();
for(

最低0.47元/天 解锁文章
1074

被折叠的 条评论
为什么被折叠?



