1 条题解
-
0
自动搬运
来自洛谷,原作者为

Genshin_ZFYX
.搬运于
2025-08-24 23:00:10,当前版本为作者最后更新于2024-07-01 08:46:54,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
首先,第一个字母必定是矩阵中字典序最大的字母。
第二个字母,是第一个字母旁边字典序最大的字母。
第三个字母是第二个字母旁边字典序最大的字母,不难想到肯定是第一个字母,这样就回到了第一步。
由此可得循环节长度 ,具体做法就是找到第一个字母(可能有多个),枚举这个字母的上、下、左、右并连接成一个字符串,找出字典序最大的字符串即可。
有时候答案只有一个字母。
最后,如果答案有两个字母且两个字母相同,输出一个就行。
小技巧:如果要把字符强制转换成字符串,可以让一个空串加上这个字符。
AC 代码:
#include<bits/stdc++.h> using namespace std; //#define int long long #define I return #define love 0 #define FIRESTARS ; string ans,space; int n,m,dx[]={0,1,0,-1},dy[]={1,0,-1,0}; char a[1005][1005],maxn=0; signed main() { cin.tie(0)->sync_with_stdio(0); cin>>n>>m; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { cin>>a[i][j]; maxn=max(maxn,a[i][j]); } ans=space+maxn; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(a[i][j]==maxn) for(int k=0;k<4;k++) { int xx=dx[k]+i,yy=dy[k]+j; if(xx>=1&&yy>=1&&xx<=n&&yy<=m&&a[xx][yy]!='#') ans=max(ans,space+a[i][j]+a[xx][yy]); } if(ans.size()==1)cout<<ans; else { if(ans[0]==ans[1])cout<<ans[0]; else cout<<ans; } I love FIRESTARS }
- 1
信息
- ID
- 10077
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者