循环积分赛

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;
                }
            }
        }
    }
posted @ 2011-11-30 20:36  xpwilson  阅读(199)  评论(0编辑  收藏  举报