30/09/2018, 16:54
Đáp án cho bài tập Team formation trên Hackerrank
Team Formation | HackerRank
Help Roy to form teams such that the smallest team is as large as possible.
Đây là lời giải của em, em chỉ tò mò muốn biết là còn cách nào khác để giải bài này không ạ?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace Question10
{
class Program
{
static void Main(String[] args)
{
int numCases = Int32.Parse(Console.ReadLine());
while (numCases > 0)
{
List<int> skillList = Console.ReadLine().Split(' ').Skip(1).Select(Int32.Parse).ToList();
skillList.Sort();
List<int> teams = new List<int>();
List<int> nextTeams = new List<int>();
int minimum = skillList.Count;
int i = 0;
while (i < skillList.Count)
{
int currentSkill = skillList[i];
while (i < skillList.Count && currentSkill == skillList[i])
{
int nextTeam = 0;
if (teams.Count > 0)
{
nextTeam = teams.Min();
teams.Remove(nextTeam);
}
nextTeams.Add(nextTeam + 1);
i++;
}
if (i < skillList.Count && skillList[i] - currentSkill == 1)
{
if (teams.Count > 0)
{
minimum = Math.Min(teams.Min(), minimum);
}
teams = nextTeams;
nextTeams = new List<int>();
}
else
{
if (teams.Count > 0)
{
minimum = Math.Min(teams.Min(), minimum);
}
if (nextTeams.Count > 0)
{
minimum = Math.Min(nextTeams.Min(), minimum);
}
teams = new List<int>();
nextTeams = new List<int>();
}
}
Console.WriteLine(minimum);
numCases--;
}
}
}
}
Bài liên quan