Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
122 / 85 / 16
Регистрация: 14.02.2011
Сообщений: 340
1

Задание с олимпиады. Массивы

14.02.2011, 23:59. Показов 2610. Ответов 27
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
условие в прикрепленнов файле.

я не смог ее решить. однако очень интересно и хотелосб ьы узнать как и что.
Вложения
Тип файла: doc Озёра.doc (28.0 Кб, 86 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.02.2011, 23:59
Ответы с готовыми решениями:

Нужно оценить(поставить оценку ученику) за задание из олимпиады
Ситуация такая. Есть задание: Задание 2 По каналу связи передаются положительные целые числа,...

Задание олимпиады "Оборона королевства"
Добрый день, попалась очень запутанная задачка, предлагаю ознакомиться Собственно сама задача в...

Задание на массивы
Здравствуйте. Такое вот задание на массивы. Нужно найти кол-во нулевых элементов массива g и найти...

Задание на массивы
Дан массив Х, состоящий из 15 числе. Упорядочить этот массив по возрастанию чисел. + Блок-схема

27
5 / 5 / 0
Регистрация: 01.11.2010
Сообщений: 97
15.02.2011, 07:58 2
А почему в задании ответ только 2 озера?

Добавлено через 1 минуту
а понял "к" - количество различных озёр, не имеющих общие стены
0
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,116
Записей в блоге: 2
15.02.2011, 10:50 3
Да, мне тоже показалось, что ответ должен быть 1, или я задания не понял(

Добавлено через 2 минуты
или "сторона" по диогонали не считается? Тогда 2.
0
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
15.02.2011, 13:30 4
Когда-то решал похожую задачу. Делается через циклическую очередь.
0
no0ker
15.02.2011, 15:19
  #5

Не по теме:

случайно нет тестов для нее?

0
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,116
Записей в блоге: 2
15.02.2011, 16:25 6
no0ker, а какие тут тесты? Руками забил в файл матрицу, и тестируй)
0
122 / 85 / 16
Регистрация: 14.02.2011
Сообщений: 340
15.02.2011, 18:13  [ТС] 7
Цитата Сообщение от Naatikin Посмотреть сообщение
А почему в задании ответ только 2 озера?

Добавлено через 1 минуту
а понял "к" - количество различных озёр, не имеющих общие стены
по диагонали могут касаться. а на счет К ты понял. 0-земля 1-вода. если 1(вода) обрамлена 0(землей) то это озеро
0
101 / 88 / 7
Регистрация: 17.12.2010
Сообщений: 416
15.02.2011, 19:12 8
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <iostream>
#include <fstream>
 
using namespace std;
 
void go_next(int x, int y, int**in, int**out,int size_x,int size_y){
    out[x][y]=0;
    if ( x<size_x-1 && out[x+1][y]==1 && in[x+1][y]==1)
        go_next(x+1,y,in,out,size_x,size_y);
 
    if ( x>=1 && out[x-1][y]==1 && in[x-1][y]==1)
        go_next(x-1,y,in,out,size_x,size_y);
 
    if ( y<size_y-1 && out[x][y+1]==1 && in[x][y+1]==1)
        go_next(x,y+1,in,out,size_x,size_y);
 
    if ( y>=1 && out[x][y-1]==1 && in[x][y-1]==1)
        go_next(x,y-1,in,out,size_x,size_y);
}
 
 
int main()
{
 
    int i,j;
    int size_x, size_y;
    int result=0;
 
    //
    ifstream a;
    a.open("in.txt");
    a>>size_x;
    a>>size_y;
    //
 
 
 
    int **in;
    in = new int*[size_x];
    for (i=0;i<size_x;++i) in[i]=new int[size_y];
    for(i=0;i<size_x;++i){
        for(j=0;j<size_y;++j) a >> in[i][j];
    }
 
 
 
    int **out;
    out = new int*[size_x];
    for (i=0;i<size_x;++i) out[i]=new int[size_y];
    for(i=0;i<size_x;++i){
        for(j=0;j<size_y;++j) out[i][j]=1;
    }
 
 
 
    for(i=0;i<size_x;++i){
        for(j=0;j<size_y;++j){
            if (in[i][j]==1 && out[i][j]==1){
                go_next(i,j,in,out,size_x,size_y);
                ++result;
            }
        }
    }
 
    cout << result;
 
 
    for(i=0;i<size_x;++i){
            delete[] in[i];
            in[i]=NULL;
            delete[] out [i];
            out[i]=NULL;
    }
    delete[] in;
    in=NULL;
    delete[] out;
    out=NULL;
 
    return 0;
}
Добавлено через 19 секунд
использовал рекурсию
0
122 / 85 / 16
Регистрация: 14.02.2011
Сообщений: 340
15.02.2011, 19:17  [ТС] 9
хм ща попробуем что тут...я уже устал ломать голову.

Добавлено через 3 минуты
no0ker, при запуске - быстро закрывается попробовал system pause. компиль ошибку дает.
а через cmd кинул говорит что нужен Runtime. ща процитирую:
The application has requested th RUNTIME to terminate
0
392 / 284 / 53
Регистрация: 26.12.2009
Сообщений: 874
15.02.2011, 19:20 10
Цитата Сообщение от instagib Посмотреть сообщение
The application has requested th RUNTIME to terminate
памяти много требует
0
101 / 88 / 7
Регистрация: 17.12.2010
Сообщений: 416
15.02.2011, 19:22 11

Не по теме:

да уж...памяти требует многовато. рекурсия как никак.... =(



Добавлено через 1 минуту
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <iostream>
#include <fstream>
 
using namespace std;
 
int size_x, size_y;
int** in, ** out;
 
void go_next(int x, int y){
    extern int size_x, size_y;
    extern int ** in, **out;
 
    out[x][y]=0;
    if ( x<size_x-1 && out[x+1][y]==1 && in[x+1][y]==1)
        go_next(x+1,y);
 
    if ( x>=1 && out[x-1][y]==1 && in[x-1][y]==1)
        go_next(x-1,y);
 
    if ( y<size_y-1 && out[x][y+1]==1 && in[x][y+1]==1)
        go_next(x,y+1);
 
    if ( y>=1 && out[x][y-1]==1 && in[x][y-1]==1)
        go_next(x,y-1);
}
 
 
int main()
{
 
    int i,j;
    extern int size_x, size_y;
    extern int **in, **out;
 
    int result=0;
 
    ifstream a;
    a.open("in.txt");
    a>>size_x;
    a>>size_y;
 
 
    in = new int*[size_x];
    for (i=0;i<size_x;++i) in[i]=new int[size_y];
    for(i=0;i<size_x;++i){
        for(j=0;j<size_y;++j) a >> in[i][j];
    }
 
    out = new int*[size_x];
    for (i=0;i<size_x;++i) out[i]=new int[size_y];
    for(i=0;i<size_x;++i){
        for(j=0;j<size_y;++j) out[i][j]=1;
    }
 
    for(i=0;i<size_x;++i){
        for(j=0;j<size_y;++j){
            if (in[i][j]==1 && out[i][j]==1){
                go_next(i,j);
                ++result;
            }
        }
    }
 
    cout << result;
 
    for(i=0;i<size_x;++i){
            delete[] in[i];
            in[i]=NULL;
            delete[] out [i];
            out[i]=NULL;
    }
 
    delete[] in;
    in=NULL;
    delete[] out;
    out=NULL;
 
    return 0;
}
а вот так?
1
122 / 85 / 16
Регистрация: 14.02.2011
Сообщений: 340
15.02.2011, 19:24  [ТС] 12
Цитата Сообщение от Mayonez Посмотреть сообщение
памяти много требует
какой еще памяти лол.
если назову конфигурацию компа поменяешь мнение.
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
15.02.2011, 19:24 13
instagib, Стек все равно не резиновый. Это так, если что. Ну и память которая используется не резиновая.
0
122 / 85 / 16
Регистрация: 14.02.2011
Сообщений: 340
15.02.2011, 19:25  [ТС] 14
no0ker, гениально! спасибо большое. работает отлично!
0
no0ker
15.02.2011, 19:28
  #15

Не по теме:

не знаю как у вас но у меня 20 на 20 проглатывает... причем быстро... 0,016 сек

1
silent_1991
15.02.2011, 19:29
  #16

Не по теме:

Вот уж чего на этом форуме в тематических разделах на моей памяти не делали - так это пиписьками не мерились! instagib будет первым! :D

2
122 / 85 / 16
Регистрация: 14.02.2011
Сообщений: 340
15.02.2011, 19:30  [ТС] 17
no0ker, а каким софтом ты пользуешься, чтоб узнать время выполнения?
0
122 / 85 / 16
Регистрация: 14.02.2011
Сообщений: 340
15.02.2011, 19:31  [ТС] 18
Цитата Сообщение от silent_1991 Посмотреть сообщение

Не по теме:

Вот уж чего на этом форуме в тематических разделах на моей памяти не делали - так это пиписьками не мерились! instagib будет первым! :D

нормально xD
0
101 / 88 / 7
Регистрация: 17.12.2010
Сообщений: 416
15.02.2011, 19:32 19

Не по теме:

silent_1991, не понял. причем тут пиписьки?



instagib, code::blocks & win xp
0
silent_1991
15.02.2011, 19:34     Задание с олимпиады. Массивы
  #20

Не по теме:

no0ker,

Цитата Сообщение от instagib Посмотреть сообщение
какой еще памяти лол.
если назову конфигурацию компа поменяешь мнение.

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.02.2011, 19:34

Задание php массивы
Customer: Фамилия, Имя, Отчество, Адрес, Телефон, Номер кредитной карточки, Номер банковского...

Задание на одномерные массивы
Желательнг всё расписать

Однородные массивы, задание
Заданный массив С (n) целых чисел. Найти номер m первого парного элемента и подсчитать сумму первых...

Задание на одномерные массивы
дан одномерный массив w(n) n=10. из элементов кратных 3 сформировать массив в .из элементов кратных...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru