循环积分赛
public class MatchSettor
{
/*Each team need to play a game with another team.
*One team can only play once in one day
*Need to complete the game in intTeamNumber-1 day
*/
int intTeamNumber = 2; //TeamNum>=2;
int intDayNumber = 1;
TeamSet[,] array = null;
public MatchSettor(int teamNum)
{
intTeamNumber = teamNum;
intDayNumber = teamNum - 1;
array = new TeamSet[intDayNumber + 1, intTeamNumber + 1];
}
public void Process()
{
for (int i = 1; i <= intDayNumber; i++)
{
for (int j = 1; j <= intTeamNumber; j++)
{
for (int k = 1; k <= intTeamNumber; k++)
{
if (!ContainsInDay(k, i) && !ContainsInTeam(k, j) && k!=j&&!ContainsInDay(j,i))
{
array[i, j] = new TeamSet(j, k);
break;
}
}
}
}
for (int i = 1; i <= intDayNumber; i++)
{
for (int j = 1; j <= intTeamNumber; j++)
{
Console.Write(array[i, j].a.ToString() + array[i, j].b.ToString() + " ");
}
Console.WriteLine();
}
}
private bool ContainsInDay(int teamNum, int dayRow)
{
bool result = false;
for (int i = 1; i <= intTeamNumber; i++)
{
if (array[dayRow, i].Contain(teamNum))
{
result = true;
break;
}
}
return result;
}
private bool ContainsInTeam(int teamNum, int teamColume)
{
bool result = false;
for (int i = 1; i <= intDayNumber; i++)
{
if (array[i, teamColume].Contain(teamNum))
{
result = true;
break;
}
}
return result;
}
public struct TeamSet
{
public int a;
public int b;
public TeamSet(int i, int j)
{
a = i;
b = j;
}
public bool Contain(int i)
{
if (a == i || b == i)
{
return true;
}
else
{
return false;
}
}
}
}
{
/*Each team need to play a game with another team.
*One team can only play once in one day
*Need to complete the game in intTeamNumber-1 day
*/
int intTeamNumber = 2; //TeamNum>=2;
int intDayNumber = 1;
TeamSet[,] array = null;
public MatchSettor(int teamNum)
{
intTeamNumber = teamNum;
intDayNumber = teamNum - 1;
array = new TeamSet[intDayNumber + 1, intTeamNumber + 1];
}
public void Process()
{
for (int i = 1; i <= intDayNumber; i++)
{
for (int j = 1; j <= intTeamNumber; j++)
{
for (int k = 1; k <= intTeamNumber; k++)
{
if (!ContainsInDay(k, i) && !ContainsInTeam(k, j) && k!=j&&!ContainsInDay(j,i))
{
array[i, j] = new TeamSet(j, k);
break;
}
}
}
}
for (int i = 1; i <= intDayNumber; i++)
{
for (int j = 1; j <= intTeamNumber; j++)
{
Console.Write(array[i, j].a.ToString() + array[i, j].b.ToString() + " ");
}
Console.WriteLine();
}
}
private bool ContainsInDay(int teamNum, int dayRow)
{
bool result = false;
for (int i = 1; i <= intTeamNumber; i++)
{
if (array[dayRow, i].Contain(teamNum))
{
result = true;
break;
}
}
return result;
}
private bool ContainsInTeam(int teamNum, int teamColume)
{
bool result = false;
for (int i = 1; i <= intDayNumber; i++)
{
if (array[i, teamColume].Contain(teamNum))
{
result = true;
break;
}
}
return result;
}
public struct TeamSet
{
public int a;
public int b;
public TeamSet(int i, int j)
{
a = i;
b = j;
}
public bool Contain(int i)
{
if (a == i || b == i)
{
return true;
}
else
{
return false;
}
}
}
}