先整体排序,再将每个字符串排序只有五十分,为什么顺序反过来就全对
查看原帖
先整体排序,再将每个字符串排序只有五十分,为什么顺序反过来就全对
1086574
Cgetierr楼主2024/1/18 21:18

先将全部字符串排序,再一个一个字符串排序

#include<iostream>
using namespace std;
#include<algorithm>
#include<vector>
#include<queue>
#include<deque>
#include<climits>
#include<cstring>
#include<string>
#include<cmath>
#include<stdlib.h>
#include<map>
#include<stack>
#include<unordered_map>
#include<set>
#define inf INT_MAX
typedef long long ll;
const int N = 1e5 + 10;
string s[N];
int n;
int cnt;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0), cout.tie(0);
	cin >> n;
	for (int i = 1; i <= n; i++)
	{
		cin >> s[i];
	}
	sort(s + 1, s + 1 + n);
	for (int i = 1; i <= n; i++)
	{
		sort(s[i].begin(), s[i].end());
	}
	for (int i = 1; i < n; i++)
	{
		if (s[i] != s[i + 1])
		{
			cnt++;
		}
	}
	cout << cnt + 1 << endl;
	return 0;
}

反过来

#include<iostream>
using namespace std;
#include<algorithm>
#include<vector>
#include<queue>
#include<deque>
#include<climits>
#include<cstring>
#include<string>
#include<cmath>
#include<stdlib.h>
#include<map>
#include<stack>
#include<unordered_map>
#include<set>
#define inf INT_MAX
typedef long long ll;
const int N = 1e5 + 10;
string s[N];
int n;
int cnt;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0), cout.tie(0);
	cin >> n;
	for (int i = 1; i <= n; i++)
	{
		cin >> s[i];
		sort(s[i].begin(), s[i].end());
	}
	sort(s + 1, s + 1 + n);
	for (int i = 1; i <= n; i++)
	{
		if (s[i - 1] != s[i])
		{
			cnt++;
		}
	}
	cout << cnt << endl;
	return 0;
}
2024/1/18 21:18
加载中...