0分但是样例能过为什么啊?
查看原帖
0分但是样例能过为什么啊?
1152249
RaidenShogunDOG楼主2023/12/28 15:33
#include<iostream>
using namespace std;
typedef struct Node Node;
struct Node
{
	char name[10];
	char camp;
	long long int familiar;
	bool ban = false;
	Node* next;
};
Node* Appcreat(int n)
{
	Node* head = NULL, * tail = NULL;
	int count = 0;
	while (count != n)
	{
		Node* temp = new Node;
		cin >> temp->name >> temp->camp >> temp->familiar;
		temp->next = NULL;
		if (!head)
			head = temp;
		else
			tail->next = temp;
		tail = temp;
		count++;
	}
	return head;
}
void Ban1(Node*head)
{
	long long int max = 0;
	Node* maxfa = NULL;
	while (head)
	{
		if (max < head->familiar&&head->ban==false&&head->camp=='H')
		{
			max = head->familiar;
			maxfa = head;
		}
		head = head->next;
	}
		maxfa->ban = true;
}
void Ban2(Node* head)
{
	long long int max = 0;
	Node* maxfa = NULL;
	while (head)
	{
		if (max < head->familiar && head->ban == false && head->camp == 'S')
		{
			max = head->familiar;
			maxfa = head;
		}
		head = head->next;
	}
	maxfa->ban = true;
}
void Jianguan(Node* head)
{
	long long int max = 0;
	Node* maxfa = NULL;
	while (head)
	{
		if (head->camp == 'H' && head->familiar > max && !head->ban)
		{
			max = head->familiar;
			maxfa = head;
		}
		head = head->next;
	}
	cout << maxfa->name << endl;
}
void Qiusheng(Node* head)
{
	long long int max = 0;
	Node* maxfa = NULL;
	while (head)
	{
		if (head->camp == 'S' && head->familiar > max && !head->ban)
		{
			max = head->familiar;
			maxfa = head;
		}
		head = head->next;
	}
	maxfa->ban = true;
	cout << maxfa->name << endl;
}
void Deletelist(Node* head)
{
	while (head)
	{
		Node* temp = head;
		head = head->next;
		delete temp;
	}
}
int main()
{
	int n, m;
	cin >> n >> m;//两个整数 n,m,分别代表求生者阵营角色数和监管者阵营角色数
	Node* head = Appcreat(m + n);
	for (int i = 0; i < 2; i++)
		Ban1(head);
	for (int i = 0; i < 5; i++)
		Ban2(head);
	Jianguan(head);
	for (int i = 0; i < 4; i++)
		Qiusheng(head);
	Deletelist(head);
	return 0;
}
2023/12/28 15:33
加载中...