第七组数据WA了求助!!!
查看原帖
第七组数据WA了求助!!!
538203
哎呀呀呀k楼主2022/7/19 19:08

只有第七组WA了,于是我把第七组的输入和输出下载了,运行我的程序后,发现和正确输出如出一辙!?但是提交就是不能过??? 这是我的代码,求大佬帮忙看看QWQ(可能写的有点繁琐):

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
using namespace std;
const int N = 35;
char mp[N][N];
int n, m, sum, in[N], G[N][N];
bool vis[N], dfsed[N];
struct node {
	int x, y;
};
bool cmp1(node x, node y) {
	return x.x < y.x;
}
bool cmp2(node x, node y) {
	return x.y < y.y;
}
void dfs(string s) {
	if (s.size() == sum - 1) {
		cout << s << endl;
		return ;
	}
	for (int i = 0; i < 26; i++) {
		if (in[i] == 0 && vis[i] && !dfsed[i]) {
			for (int j = 0; j < 26; j++) if (G[i][j]) in[j]--;
			dfsed[i] = true;
			dfs(s + char('A' + i));
			dfsed[i] = false;
			for (int j = 0; j < 26; j++) if (G[i][j]) in[j]++;
		}
	} 
}
int main() {
	scanf("%d%d", &n, &m);
	m++;
	string s;
	getline(cin, s);
	for (int i = 1; i <= n; i++) {
		getline(cin, s);
		for (int j = 1; j <= m; j++) {
			mp[i][j] = s[j - 1];
		}
	}
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			char ch = mp[i][j];
			if (ch != '.' && !vis[ch - 'A']) {
				sum++;
				vis[ch - 'A'] = true;
				vector<node> v1, v2;
				for (int k = 1; k <= n; k++) {
					for (int l = 1; l <= m; l++) {
						if (mp[k][l] == ch) {
							v1.push_back({k, l});
							v2.push_back({k, l});
						}
					}
				}
				sort(v1.begin(), v1.end(), cmp1);
				sort(v2.begin(), v2.end(), cmp2);
				int minx = v1[0].x;
				int maxx = v1[v1.size() - 1].x;
				int miny = v2[0].y;
				int maxy = v2[v2.size() - 1].y;
				for (int k = minx; k <= maxx; k++) {
					if (mp[k][miny] != '.' && mp[k][miny] != ch && !G[ch - 'A'][mp[k][miny] - 'A']) {
						G[ch - 'A'][mp[k][miny] - 'A'] = true;
						in[mp[k][miny] - 'A']++;
					}
					if (mp[k][maxy] != '.' && mp[k][maxy] != ch && !G[ch - 'A'][mp[k][maxy] - 'A']) {
						G[ch - 'A'][mp[k][maxy] - 'A'] = true;
						in[mp[k][maxy] - 'A']++;
					}
				}
				for (int l = miny; l <= maxy; l++) {
					if (mp[minx][l] != '.' && mp[minx][l] != ch && !G[ch - 'A'][mp[minx][l] - 'A']) {
						G[ch - 'A'][mp[minx][l] - 'A'] = true;
						in[mp[minx][l] - 'A']++;
					}
					if (mp[maxx][l] != '.' && mp[maxx][l] != ch && !G[ch - 'A'][mp[maxx][l] - 'A']) {
						G[ch - 'A'][mp[maxx][l] - 'A'] = true;
						in[mp[maxx][l] - 'A']++;
					}
				}
			}
		}
	}	
	dfs("");
	return 0;
} 
2022/7/19 19:08
加载中...