Это правильный способ решения проблемы с рюкзаком? - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь попрактиковаться в проблемах на собеседовании и натолкнулся на проблему с рюкзаком.Это правильный способ решения проблемы?

Мне еще предстоит сделать рекурсивный подход.Сложность O (n2) здесь?

private void kpsolve()
{           
        int[] items = new int[] { 1, 2, 3, 4 , 5, 6};
        int[] weights = new int[] { 1, 2, 3, 8 ,7 ,4};
        int[] profits = new int[] { 20, 5 ,10, 40, 15,25 };

        int capacity = 10;

        //number of items in a set that can yield max profits
        Dictionary<List<int>, int> weightmap = new Dictionary<List<int>, int>();
        for(int i=0;i< weights.Length;i++)
        {
            List<int> currList = new List<int>();
            int runprofit = 0;
            int runweight = 0;
            var w = weights[i];
            var p = profits[i];
            int cw = w;

            if (w > capacity)
                continue;

            currList.Add(i);
            runprofit = p;
            runweight = w;

            for (int j = 0; j < weights.Length; j++)
            {
                if (j == i)
                    continue;

                var iw = weights[j];
                var ip = profits[j];

                if ((runweight + iw) <= capacity)
                {
                    currList.Add(j);
                    runprofit += ip;
                    runweight += iw;
                }

            }

            weightmap.Add(currList, runprofit);
        }
        var lvalues = weightmap.Max(w => w.Value);

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...