Форум программистов, компьютерный форум, киберфорум
C (Си)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 24.03.2019
Сообщений: 2
1

Олимпиадная задача по программированию.Ошибка в моем коде

24.03.2019, 22:28. Показов 671. Ответов 3
Метки нет (Все метки)

Здравствуйте, буду краток, поэтому...задача: Узник пытается бежать из замка, который состоит из MN квадратных комнат, расположенных в виде прямоугольника M×N. Между любыми двумя соседними комнатами есть дверь , однако некоторые комнаты закрыты и попасть в них нельзя. В начале узник находится в угловой левой нижней комнате и для спасения ему надо попасть в противоположную угловую правую верхнюю комнату. Определить можно ли это сделать или нет.
Мой код:
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>
#include <conio.h>
#include <Windows.h>
 
#define MAX 100
 
int m = 0, n = 0, i = 0, r = 0, sogl = 1;  
 
int kl[MAX];
 
int funct(int i, int kl[MAX], int m, int n, int r, int sogl);
 
int main(void) {
    scanf("%d%d", &m, &n);
 
    for (int k = 0; k < (m*n); k++) {
        scanf("%d", &kl[k]);
    }
 
    if (kl[n - 1] == 0 || kl[m*n - n] == 0) {
        printf("impossible");
    }
    else {
        funct(i, kl, m, n, r, sogl);
    }
 
    _getch();
    return 0;
}
 
int funct(int i, int kl[MAX], int m, int n, int r, int sogl) {
    if ((i != (m - 1) && sogl == 1) || (r != (n - 1))) {
        if (i <= (m - 1) && sogl == 1) {
            if (kl[m*n - n - ((i + 1)*n) + r] == 1) {
                return funct(i + 1, kl[MAX], m, n, r, (sogl - 1));           //вертикальная проверка на 1
            }
        }
        if (r != (n - 1)) {
            if (kl[m*n - n - (i*n) + r] == 1) {
                return funct(i, kl[MAX], m, n, (r + 1), sogl);
            }                                               //горизонтальная проверка на 1
            else {
                return funct(i, kl[MAX], m, n, (r + 4), sogl + 1);
            }
        }
        else {
            sogl++;
        }
    }
    else {
        if (i == (m - 1) && r == (n- 1)) {
            printf("possible");
        }
        else {
            printf("impossible");
        }
        return 0;
    }
}
Если что-то не понятно в моем коде , какие-то переменные или еще что-то то расскажу;
Я новичок в программирование , поэтому не ругайте за код или ошибки...
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.03.2019, 22:28
Ответы с готовыми решениями:

Олимпиадная задача по программированию. PascalABC.NET. Задача L. Переключение между окнами
Когда пользователь работает в операционной системе Winux, у него часто запущено несколько...

Олимпиадная задача по программированию. PascalABC.NET. Задача С. Считалка
Ирочка попросила маму придумать новую считалочку. Мама тут же ей &quot;выдала&quot;. Пусть в кругу N...

Олимпиадная задача по программированию
Помогите написать программу для решения следующей задачи (из Всесибирской Открытой Олимпиады...

Олимпиадная задача по программированию. PascalABC.NET
Здравствуйте, я готовлюсь к школьной олимпиаде по информатике, не могу решить задачу (85 баллов из...

3
Диссидент
Эксперт C
26350 / 16356 / 3558
Регистрация: 24.12.2010
Сообщений: 36,216
25.03.2019, 11:34 2
dolka2, вы бы лучше
а) Научились пользоваться тегами выделения кода (могу научить)
б) Рассказали, в чем имено проблема
0
0 / 0 / 0
Регистрация: 24.03.2019
Сообщений: 2
25.03.2019, 11:55  [ТС] 3
Вообщем-то я уже сам все разгадал,как удалить или редактировать сообщение??
0
Диссидент
Эксперт C
26350 / 16356 / 3558
Регистрация: 24.12.2010
Сообщений: 36,216
25.03.2019, 12:12 4
Цитата Сообщение от dolka2 Посмотреть сообщение
Вообщем-то я уже сам все разгадал,
Молодец!
Цитата Сообщение от dolka2 Посмотреть сообщение
как удалить или редактировать сообщение?
Уже никак. Да и не нужно. Вы уже все сказали. Хорошо бы рассказать, в чем же было дело, но это уже на ваше усмотрение.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.03.2019, 12:12

Олимпиадная задача по программированию: Таджикские имена
Отсортировать N слов по алфавиту. Разделить по группам те которые заканчиваются на &quot;хон&quot;,...

Олимпиадная задача по программированию. PascalABC.NET
Вася с Петей и Колей заработали много денег. Чтобы не мучиться с дележкой, они решили, что сначала...

Олимпиадная задача по программированию. PascalABC.NET
Найти количество целых решений, удовлетворяющих неравенству: A ≤ B*x + C ≤ D. Формат ввода В...

ребята в чем заключается в моём коде ошибка, подскажите пожалуйста
#include &lt;iostream&gt; using namespace std; int main() { class grid: def __init__(self,n =...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru