求助大佬,实在不明白为什么RE,谢谢
查看原帖
求助大佬,实在不明白为什么RE,谢谢
473921
define_love_gt楼主2021/1/30 20:39
#include <iostream>
#include <cstring>
using namespace std;

struct Name
{
	int cnt;
	char m_name[50];
};

void Sorting(Name* X, int n);
Name* Searching(Name* X, char* s, int head, int tail);

int main()
{
	int n, m;
	cin >> n;
	Name* List = new Name[n];
	for (int i = 0; i < n; ++i)
	{
		cin >> List[i].m_name;
		List[i].cnt = 0;
	}
	Sorting(List, n);
	char str[50] = { '\0' };
	cin >> m;
	for (int i = 0; i < m; ++i)
	{
		cin >> str;
		Name* p = Searching(List, str, 0, n - 1);
		if (p == NULL)
			cout << "WRONG" << endl;
		else if (p->cnt == 1)
			cout << "OK" << endl;
		else if (p->cnt >= 2)
			cout << "REPEAT" << endl;
	}
	delete[]List;
	return 0;
}
void Sorting(Name* X, int n)
{
	char temp[50] = { '\0' };
	int i, min;
	for (i = 0; i < n - 1; ++i)
	{
		min = i;
		for (int j = i + 1; j < n; ++j)
		{
			if (strcmp(X[min].m_name, X[j].m_name) == 1)
				min = j;
		}
		if (min != i)
		{
			strcpy(temp, X[i].m_name);
			strcpy(X[i].m_name, X[min].m_name);
			strcpy(X[min].m_name, temp);
		}
	}
}
Name* Searching(Name* X, char* s, int head, int tail)
{
	int mid = (head + tail) / 2;
	if (head > tail)
		return NULL;
	if (strcmp(X[mid].m_name, s) == 0)
	{
		++X[mid].cnt;
		return &X[mid];
	}
	else if (strcmp(X[mid].m_name, s) == -1)
		return Searching(X, s, mid + 1, tail);
	else if (strcmp(X[mid].m_name, s) == 1)
		return Searching(X, s, head, mid - 1);
}
2021/1/30 20:39
加载中...