社区讨论

入门赛H题求救

学术版参与者 6已保存回复 15

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
15 条
当前快照
1 份
快照标识符
@mhk7ahlw
此快照首次捕获于
2025/11/04 14:41
4 个月前
此快照最后确认于
2025/11/04 23:33
4 个月前
查看原帖
#1#2#3AC,其余WA,代码如下:
CPP
#include <bits/stdc++.h>
using namespace std;
int n, m;
char c[1010][1010];
int main () {
    cin >> n >> m;
    for (int i = 0; i < n; i ++) {
    	string s, ss;
    	cin >> s;
		for (int j = 0; j < s.size (); j ++) 
    		ss += '#';
    	bool flag = 0;
    	int a = 0, b = 0, h;
    	for (int j = 0; j < s.size (); j ++) 
    		if (s[j] == 'H') flag = 1, h = j;
    	for (int j = 0; j < s.size (); j ++) {
    		if (s[j] == 'A') a ++;
    		else if (s[j] == 'B') b ++;
		}
		if (! flag) {
			if (a > b) {
				for (int j = ss.size () - 1; j > s.size () - 1 - a; j --) ss[j] = 'A';
			} else if (b > a) {
				for (int j = 0; j < b; j ++) ss[j] = 'B';
			}
		} else {
			ss[h] = 'H';
			for (int j = 0; j < a; j ++) ss[j] = 'A';
			for (int j = ss.size () - 1; j > ss.size () - 1 - b; j --) ss[j] = 'B';
		}
		for (int j = 0; j < m; j ++) 
			c[i][j] = ss[j];
		//cout << ss << '\n';
	}
	for (int i = 0; i < n; i ++) {
		for (int j = 0; j < m; j ++) {
			if (c[i][j] == 'A') {
				if (c[i + 1][j] == 'A') 
					c[i][j] = '#', c[i + 1][j] = '#';
				else if (c[i - 1][j] == 'A') 
					c[i][j] = '#', c[i - 1][j] = '#';
			} else if (c[i][j] == 'B') {
				if (c[i + 1][j] == 'B') 
					c[i][j] = '#', c[i + 1][j] = 'B';
				else if (c[i - 1][j] == 'B') 
					c[i][j] = '#', c[i - 1][j] = 'B';
			}
		}
	}
	for (int i = 0; i < n; i ++) {
		for (int j = 0; j < m; j ++) 
			cout << c[i][j];
		puts ("");
	}
}

回复

15 条回复,欢迎继续交流。

正在加载回复...