Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2010, 11:24   #1
Daniya.ru
Пользователь
 
Аватар для Daniya.ru
 
Регистрация: 24.11.2010
Сообщений: 17
По умолчанию Динамическое программирование

Задание 1. В прямоугольной таблице NxM (в каждой клетке которой записано некоторое число) в начале игрок находится в левой верхней клетке. За один ход ему разрешается перемещаться в соседнюю клетку либо вправо, либо вниз (влево и вверх перемещаться запрещено). При проходе через клетку с игрока берут столько у.е., какое число записано в этой клетке (деньги берут также за первую и последнюю клетки его пути).
Требуется найти минимальную сумму у.е., заплатив которую игрок может попасть в правый нижний угол.
Входные данные
Во входном файле INPUT.TXT задано два числа N и M – размеры таблицы (1 ≤ N ≤ 20, 1 ≤ M ≤ 20). Затем идет N строк по M чисел в каждой – размеры штрафов в у.е. за прохождение через соответствующие клетки (числа от 0 до 100).
Выходные данные
В выходной файл OUTPUT.TXT выведите минимальную сумму, потратив которую можно попасть в правый нижний угол.
Пример
INPUT.TXT OUTPUT.TXT
3 4
1 1 1 1
5 2 2 100
9 4 2 1
8
Daniya.ru вне форума Ответить с цитированием
Старый 19.12.2010, 11:27   #2
Daniya.ru
Пользователь
 
Аватар для Daniya.ru
 
Регистрация: 24.11.2010
Сообщений: 17
По умолчанию

Помогите пожалуйста дорешать задачку!Ошибка в Min

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Tablicalab6msd
{
    class Program
    {
        static void Main(string[] args)
        {   int s=2, st=2;
            int i, j;
            int[,] mas = new int[s, st];
            int c=0,sum;

            Console.WriteLine("Введите элементы матрицы:");
            for (i = 0; i < s; i++)
            {

                for (j = 0; j < st; j++)
                {
                    mas[i, j] = int.Parse(Console.ReadLine()); 
                }
            }
 
            
            for (i = 0; i < s; i++)
            {

                for (j = 0; j < st; j++)
                {
                    sum=mas[i,j]+=Min(mas[i,j-1],mas[i-1,j])+mas[i,j];
                    //if (mas[i, j + 1] < mas[i + 1, j]) { j++; mas[i, j+1] =c; }
                    //else { i++; mas[i+1,j]=c; }
                }
            }
            Console.WriteLine(sum);
           
            Console.ReadLine();

        }
    }
}


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 19.12.2010 в 11:30.
Daniya.ru вне форума Ответить с цитированием
Старый 19.12.2010, 11:40   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

А Вы не задумывались, почему задача на "динамическое программирование" ?
Выбранный Вами алгоритм решения НЕВЕРЕН.
выбрав минимальное число на ТЕКУЩЕМ шаге нельзя получить минимальное значение ВСЕГО пути..

почитайте:
http://www.programmersforum.ru/showp...24&postcount=6
http://www.programmersforum.ru/showthread.php?t=70592
http://www.programmersforum.ru/showthread.php?t=65954
http://programmersforum.ru/showthread.php?t=60512
http://www.programmersforum.ru/showthread.php?t=60880

если вкратце - берём новый массив, потом идя с правого нижнего угла вверх и влево заполняем его минимальной суммой, которую можно получить двигаясь от этой ячейки к конечной.
Когда дошли до левого верхнего угла - то уже путь можно прокладывать по этой таблице минимумов (там в задаче для черепашки ищутся максимумы, Вам нужны минимумы - но это по сути ничего не меняет)!

Последний раз редактировалось Serge_Bliznykov; 19.12.2010 в 11:43.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi.Динамическое программирование Егор527 Помощь студентам 5 03.06.2010 14:05
Динамическое программирование joey_ramone Паскаль, Turbo Pascal, PascalABC.NET 0 23.04.2010 13:51
Динамическое программирование. MAKEDON Помощь студентам 6 26.08.2009 14:10
динамическое программирование в Delphi Ира08 Помощь студентам 0 03.04.2009 18:07
Задача на динамическое программирование Римма1990 Помощь студентам 2 02.04.2009 23:11