求助!50 pts!
查看原帖
求助!50 pts!
1001535
封禁用户楼主2024/11/30 14:15
#include <bits/stdc++.h>
using namespace std;
long long n, m;
char c[1001][1001];
char a;
long long ans = 1;
char d;
int t, h;
char maxx(char a, char b) {
	if (a > b) return a;
	return b;
}
char minn(char a, char b) {
	if (a < b) return a;
	return b;
}
int main () {
	cin >> n >> m;
	for (int i = 1; i <= n; i ++) {
		for (int j = 1; j <= m; j ++) {
			cin >> c[i][j];
		}
	}
	for (int i = 1; i <= n; i ++) {
		for (int j = 1; j <= m; j ++) {
			if (c[i][j] >= 'A') {
				if (ans == 1) {
					a = c[i][j], d = c[i][j], t = i, h = j, ans ++;
				} else {
					if ((t == i and a == c[i][j] and c[i][j + 1] >= c[i][j]) or (h == j and a == c[i][j] and c[i + 1][j] >= c[i][j] ) 
					and (c[i + 1][j] != '#' or c[i][j + 1] != '#') and (c[i - 1][j] != '#' or c[i][j - 1] != '#')  ) {
						cout << a ;
						return 0;
					}//如果左右上下没有间隔,而字母一样(一定是最大字典序),输出一个即可。
					a = maxx(c[i][j], a);//最大值
					if (d >= a) d = ' ';//防止 d 等于 a  而判断结果错误,于是初始化。
				    if(c[i][j] < a) {d = maxx(minn(a , c[i][j]) , d);}
//					}//次大值。
//cout  << "a=" << a  << " " << "d="  << d << endl;
				}
			}
//			cout  << "a=" << a  << " " << "d="  << d << endl;
		}
	}
//	sort(a,a + ans);
//	for(int i = 0; i <= ans ; i ++) {
//	cout << a;

//	cout << ans << " ";
//	sort(a + 1, a + ans + 1 , cmp);
//	for(int i = 1; i <= ans; i ++) {
////		if(a[i] == ' ') continue;
//		cout << a;
//	}
//	cout << "A";
//cout << d;
//cout << t << " ";

	if (a == d or n >= 20 ) cout << a;
	else cout << a << d;
	return 0;
}

record,WA 了点#6,给个 hack,谢谢!

2024/11/30 14:15
加载中...