Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
im_Kudrik
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 20
#1

коротчайший путь - C++

13.12.2011, 18:27. Просмотров 394. Ответов 5
Метки нет (Все метки)

задается массив NxN нужно найти коротчайший путь от позиции 1х1 до NxN и обозначить путь символом # а все остальное символов - .коротчайший путь считается тот ,сумма чисел которых минимальна и двигаться можно только вправо и вниз .
пример
вводим вывод
3
943 #--
216 ###
091 --#
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2011, 18:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос коротчайший путь (C++):

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

G++.exe путь к *.h - C++
Учусь работать в консоли с g++.exe (из MinGW). В с++ новичок. Перехожу с явы (и Делфи) - h-файлы для меня нечто новое и малопонятное. ...

Путь к файлу - C++
Как сделать чтоб пользователь указывал путь к файлу который используеться дл читения?

Путь символа - C++
Здорова господа! Есть интересная задачка: "Проследите путь символа в вашей системе от клавиатуры до экрана на примере следующего...

путь фишки - C++
фишка может двигаться по полю длины N только вперед. длина хода фишки не более К. найти число различных путей, по которым фишка может...

Путь до файла - C++
Здравствуйте, скажите как получить путь до файла зная только его имя и расширение. Достойных примеров не нашел хоть и убил на это весь...

5
valeriikozlov
Эксперт С++
4672 / 2498 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
13.12.2011, 20:51 #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <stdio.h>
#define N 100
int main()
{
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);     
    int mas[N][N], mas1[N][N], i, j, n;
    char mas_res[N][N];
    scanf("%d", &n);
    for(i=0; i<n; i++)
        for(j=0; j<n; j++)
        {
            scanf("%d", &mas[i][j]);
            mas_res[i][j]='-';
        }
    mas1[0][0]=mas[0][0];
    for(i=1; i<n; i++)
    {
        mas1[i][0]=mas[i][0]+mas1[i-1][0];
        mas1[0][i]=mas[0][i]+mas1[0][i-1];
    }
    for(i=1; i<n; i++)
        for(j=1; j<n; j++)
        {
            if(mas1[i-1][j]<=mas1[i][j-1])
                mas1[i][j]=mas[i][j]+mas1[i-1][j];
            else
                mas1[i][j]=mas[i][j]+mas1[i][j-1];
        }
    i=n-1; j=n-1;
    mas_res[n-1][n-1]='#';
    while(!(i==0 && j==0))
    {
        if(i==0)
        {
            j--;            
        }
        else
        {
            if(j==0)
                i--;
            else
            {
                if(mas1[i-1][j]==mas1[i][j]-mas[i][j])
                    i--;
                else
                    j--;
            }
        }
        mas_res[i][j]='#';
    }
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
            printf("%c", mas_res[i][j]);
        printf("\n");
    }
        return 0;
}
В этом коде:
- максимальное N не более 100
- ввод данных из файла input.txt, вывод данных в файл output.txt
- при вводе данных, например:
Цитата Сообщение от im_Kudrik Посмотреть сообщение
3
9 4 3
2 1 6
0 9 1
между числами обязательны пробелы.
1
im_Kudrik
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 20
14.12.2011, 09:57  [ТС] #3
спасибо большое ))

Добавлено через 12 часов 35 минут
а можно как то без пробелов??
0
valeriikozlov
Эксперт С++
4672 / 2498 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
14.12.2011, 10:32 #4
Цитата Сообщение от im_Kudrik Посмотреть сообщение
а можно как то без пробелов??
можно:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <stdio.h>
#define N 100
int main()
{
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);     
        int mas[N][N], mas1[N][N], i, j, n;
        char mas_res[N][N], c;
        scanf("%d\n", &n);
        for(i=0; i<n; i++)
        {
                for(j=0; j<n; j++)
                {
                        scanf("%c", &c);
                        mas[i][j]=(int)(c-'0');
                        mas_res[i][j]='-';
                }
                scanf("\n");
        }
        mas1[0][0]=mas[0][0];
        for(i=1; i<n; i++)
        {
                mas1[i][0]=mas[i][0]+mas1[i-1][0];
                mas1[0][i]=mas[0][i]+mas1[0][i-1];
        }
        for(i=1; i<n; i++)
                for(j=1; j<n; j++)
                {
                        if(mas1[i-1][j]<=mas1[i][j-1])
                                mas1[i][j]=mas[i][j]+mas1[i-1][j];
                        else
                                mas1[i][j]=mas[i][j]+mas1[i][j-1];
                }
        i=n-1; j=n-1;
        mas_res[n-1][n-1]='#';
        while(!(i==0 && j==0))
        {
                if(i==0)
                {
                        j--;                    
                }
                else
                {
                        if(j==0)
                                i--;
                        else
                        {
                                if(mas1[i-1][j]==mas1[i][j]-mas[i][j])
                                        i--;
                                else
                                        j--;
                        }
                }
                mas_res[i][j]='#';
        }
        for(i=0; i<n; i++)
        {
                for(j=0; j<n; j++)
                        printf("%c", mas_res[i][j]);
                printf("\n");
        }
        return 0;
}
0
im_Kudrik
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 20
14.12.2011, 10:59  [ТС] #5
огромное вам спасибо ,но мне кажется если считывать char массив и дальше работать с int так будет лучше ,как вы думаете ?
0
valeriikozlov
Эксперт С++
4672 / 2498 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
14.12.2011, 12:10 #6
Цитата Сообщение от im_Kudrik Посмотреть сообщение
огромное вам спасибо ,но мне кажется если считывать char массив и дальше работать с int так будет лучше ,как вы думаете ?
Можно и так.
0
14.12.2011, 12:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2011, 12:10
Привет! Вот еще темы с ответами:

Критический путь - C++
помогите найти алгоритм критического пути.Обыскал весь инет ничего не нашол. З.Ы: Можно как-то переписать алгоримт Дейстры чтоб он искал...

Путь к файлу - C++
Всем привет) помогите как считать строки с файла, вроде все работает но файл не находит, как правильно указать путь? #include...

путь к файлу - C++
String x,n,v; x=Form1-&gt;Memo2-&gt;Text; // имя файла n= Form1-&gt;Memo1-&gt;Text; // имя папки v=&quot;.txt&quot;; // разрешение файла...

Нужный путь - C++
Доброй ночи, форумчане! Я программист ранга начинающего. Подскажите пожалуйста, что можно закодить, чтобы зависнуть в проецировании кода на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru