Пример #1
0
        public void OnPost()
        {
            CaveReturnModel newCave = new CaveReturnModel();

            if (ModelState.IsValid)
            {
                List <int> caves = CaveListFromForm.Split(",").Select(Int32.Parse).ToList();

                newCave.CaveList = caves;

                caveData = MaxSumNonAdjacentNumbers.GetCaveData(newCave);
            }
            else
            {
                newCave.CaveList = new List <int> {
                    8, 2, 1, 9, 1, 1, 9
                };
                caveData = MaxSumNonAdjacentNumbers.GetCaveData(newCave);
            }

            for (int i = 0; i < newCave.MaxCavesByIndex.Count(); i++)
            {
                newCave.MaxCavesByIndex[i] = newCave.MaxCavesByIndex[i] + 1;
            }
        }
Пример #2
0
        public static CaveReturnModel GetCaveData(CaveReturnModel cave)
        {
            int        priorMaxSum     = 0;
            List <int> priorMaxSumList = new List <int>();

            // initial max sum
            int        maxSum     = cave.CaveList[0];
            List <int> maxSumList = new List <int>();

            maxSumList.Add(0);

            for (int i = 1; i < cave.CaveList.Count; i++)
            {
                int        currSum;
                List <int> currSumList;
                currSum     = priorMaxSum + cave.CaveList[i];
                currSumList = new List <int>(priorMaxSumList);
                currSumList.Add(i);

                // update prior max sum and list
                priorMaxSum     = maxSum;
                priorMaxSumList = new List <int>(maxSumList);

                if (currSum > maxSum)
                {
                    // update max sum
                    maxSum     = currSum;
                    maxSumList = currSumList;
                }
            }
            cave.MaxCaveLoot       = maxSum;
            cave.MaxCavesByIndex   = maxSumList;
            cave.MaxCavesByInteger = (from x in cave.MaxCavesByIndex select cave.CaveList[x]).ToList();
            return(cave);
        }
Пример #3
0
        public IActionResult GetBestLoot([FromBody] CavePostModel caveData)
        {
            CaveReturnModel newCave = new CaveReturnModel();

            newCave.CaveList = caveData.CaveList.Split(",").Select(int.Parse).ToList();

            newCave = MaxSumNonAdjacentNumbers.GetCaveData(newCave);

            return(Ok(newCave));
        }
Пример #4
0
        public IActionResult GetLoot()
        {
            CaveReturnModel newCave = new CaveReturnModel();

            newCave.CaveList = new List <int> {
                8, 2, 1, 9, 1, 1, 9
            };

            newCave = MaxSumNonAdjacentNumbers.GetCaveData(newCave);

            return(Ok(newCave));
        }
Пример #5
0
        public void OnGet()
        {
            CaveReturnModel newCave = new CaveReturnModel();

            newCave.CaveList = new List <int> {
                8, 2, 1, 9, 1, 1, 9
            };


            caveData = MaxSumNonAdjacentNumbers.GetCaveData(newCave);

            for (int i = 0; i < newCave.MaxCavesByIndex.Count(); i++)
            {
                newCave.MaxCavesByIndex[i] = newCave.MaxCavesByIndex[i] + 1;
            }
        }