Страница: 1 |
Я живу в Украине, в городе Тернополь.Недавно у нас проводилась городская олимпиада по программированию. Результаты пока не известны, но я уверен, что первое место не мое. Вся проблема в последнем задании (Ну не понимаю я его и все!). Может вы сделаете его. Привожу без изменений: ---------------Задание 4.Химия (45 баллов)--------- Дано N веществ и таблица их взаимодействий, т. е., a[i,j]=0, если i вещество не взаимодействует с j веществом и a[i,j]=k (1<=i,j,k<=N), если при их взаимодействии получается k вещество. В пробирку одно за другим насыпаются вещества.Оказавшись вместе, онм могут вступить в реакцию. Вновь созданное вещество, возможно, реагирует с тем, что лежит ниже его и. т. д. Известно, что реакция взаимодействия состоится мгновенно и только между двумя соседними шарами. ТЕХНИЧЕСКОЕ ЗАДАНИЕ Описать алгоритм, который определяет по заданной последовательности, которые вещества останутся в пробирке. Данные про взаимодействие веществ подаются в виде текстового файла input.txt, в первой строке которого указано количество N веществ (N<=10), а в следующих N задано по N чисел, определяющих таблицу взаимодействий. С клавиатуры вводится только порядок засыпания веществ. ПРИМЕР файл input.txt 3 032 301 210 При вводе с клавиатуры 1 2 3 Выход: 3 ------------------Конец---------- Примечание: это задание делали и 10 и 11 класники (я в 10ом).
Чего ж тут непонятного? При засыпании вещества в пробирку проверяешь, реагирует ли оно с тем, которое снизу. Если нет, идешь дальше. Если да, проводишь реакцию, т.е. заменяешь 2 слоя на один, проверяешь то же самое дальше, пока реакция не прекратится. И так для всех веществ. Что в этой задаче сложного? (странная у вас какая-то городская олимпиада...) А ты пример напиши С грехом пополам, но этот код, накатанный за 15 минут (долго вспоминал, как Split работает ) работает. Думаю, разберешься: Private Sub Command1_Click() Dim a(100, 100), l() As String, k() As String, p(100), res(100) f = FreeFile Open "c:\win98\рабочий стол\input.txt" For Input As f Line Input #f, n For i = 1 To n Line Input #f, s l() = Split(s, " ") For j = 0 To n - 1 a(i, j + 1) = Val(l(j)) Next Next Close k() = Split(Text1, " ") sp = 0 For i = 0 To UBound(k) p(sp) = Val(k(i)) If sp > 0 Then Do Until a(p(sp), p(sp - 1)) = 0 p(sp - 1) = a(p(sp), p(sp - 1)) sp = sp - 1 If sp = 0 Then Exit Do Loop End If sp = sp + 1 Next For i = 0 To sp - 1 res(p(i)) = 1 Next d = "" For i = 1 To 100 If res(i) = 1 Then d = d & i & vbCrLf Next MsgBox d End Sub Мне прак по химии оформлять надо, а я тут задачи по программингу решаю Не работает (по крайней мере поставленных задач не решает) Обясни мне одно: структуру input.txt. 3 0 3 2 3 0 1 2 1 0 В текстовое поле вводишь 1 2 3 Все работает. А где ты тут структуру input.txt увидел? input.txt - это файл.... Какая еще структура input.txt??? 3 - линейный размер массива Дальше сам массив. Если n реагирует с m, то a[n][m] содержит продукт p, иначе 0. Если уж ты и задание не понял, стоит ли вообще браться за олимпиады? Мне ответить или это шутка такая? a[1][1]=0 a[1][2]=3 a[1][3]=2 a[2][1]=3 a[2][2]=0 a[2][3]=1 a[3][1]=2 a[3][2]=1 a[3][3]=0 Бли-и-и-и-и-и-и-н!!!!!!!!!!!!!! Вот ты меня просветил!!! И как я не догадался! Спасибо, учту на следующий раз. Учти уж, пожалуйста. Но в олимпиадах тебе рановато участовать, имхо. Страница: 1 |
Вопрос: Победителям олимпиад!
Добавлено: 22.12.03 17:12
Автор вопроса: DaSharm | Web-сайт:
Ответы
Всего ответов: 12
Номер ответа: 1
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #1
Добавлено: 22.12.03 17:35
Номер ответа: 2
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #2
Добавлено: 22.12.03 17:41
Номер ответа: 3
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #3
Добавлено: 22.12.03 18:28
Номер ответа: 4
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #4
Добавлено: 22.12.03 19:02
Номер ответа: 5
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #5
Добавлено: 22.12.03 19:26
Номер ответа: 6
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #6
Добавлено: 22.12.03 19:49
Я не понимаю структуру input.txt, может обясниш?
Номер ответа: 7
Автор ответа:
NovichoK
Вопросов: 72
Ответов: 147
Профиль | | #7
Добавлено: 22.12.03 20:20
Номер ответа: 8
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #8
Добавлено: 22.12.03 20:43
Номер ответа: 9
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #9
Добавлено: 22.12.03 20:54
ТОГДА ЧТО ЗНАЧИТ ЭТА СТРОКА: 3 0 13 ЭТО ЧТО?0 ЭТО ЧТО?1 ЭТО ЧТО?Где вещества а где результат взаимодействия?
Номер ответа: 10
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #10
Добавлено: 22.12.03 21:01
Номер ответа: 11
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #11
Добавлено: 22.12.03 23:07
Номер ответа: 12
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #12
Добавлено: 22.12.03 23:59