我是真无语了
查看原帖
我是真无语了
661984
Stone_Xz楼主2024/7/9 15:12

大家看一下这份代码,只有10分。。。

#include<bits/stdc++.h>
#define int long long
using namespace std;

const int N = 505;
int n, m, ans;
string a[N], b[N];
unordered_map<string, bool> vis; 

signed main()
{
	cin >> n >> m;
	for(int i = 1; i <= n; i++)
		cin >> a[i]; // 有斑点
	for(int i = 1; i <= n; i++)
		cin >> b[i]; // 没斑点
	for(int p1 = 0; p1 < m; p1++)
		for(int p2 = p1 + 1; p2 < m; p2++)
			for(int p3 = p2 + 1; p3 < m; p3++)
			{
				vis.clear();
				for(int i = 1; i <= n; i++)
				{
					string tmp = "";
					tmp += a[i][p1] + a[i][p2] + a[i][p3];
					vis[tmp] = true;
				}
				for(int i = 1; i <= n; i++)
				{
					string tmp = "";
					tmp += b[i][p1] + b[i][p2] + b[i][p3];
					if(vis[tmp])
					{
						ans--;
						break;
					}
				}
				ans++;
			}
	cout << ans;
	return 0;
}

离谱的来了,如果改成这样就 A 了:

#include<bits/stdc++.h>
#define int long long
using namespace std;

const int N = 505;
int n, m, ans;
string a[N], b[N], kong = "";
unordered_map<string, bool> vis; 

signed main()
{
	cin >> n >> m;
	for(int i = 1; i <= n; i++)
		cin >> a[i]; // 有斑点
	for(int i = 1; i <= n; i++)
		cin >> b[i]; // 没斑点
	for(int p1 = 0; p1 < m; p1++)
		for(int p2 = p1 + 1; p2 < m; p2++)
			for(int p3 = p2 + 1; p3 < m; p3++)
			{
				vis.clear();
				for(int i = 1; i <= n; i++)
				{
					string tmp = kong + a[i][p1] + a[i][p2] + a[i][p3];
					vis[tmp] = true;
				}
				for(int i = 1; i <= n; i++)
				{
					string tmp = kong + b[i][p1] + b[i][p2] + b[i][p3];
					if(vis[tmp])
					{
						ans--;
						break;
					}
				}
				ans++;
			}
	cout << ans;
	return 0;
}

其中,唯一的区别就是将

string tmp = "";
tmp += a[i][p1] + a[i][p2] + a[i][p3];

改成了:

string kong = "";
string tmp = kong + a[i][p1] + a[i][p2] + a[i][p3];

有哪位大佬能告诉我,这有什么区别QWQ

2024/7/9 15:12
加载中...