Бағдарламалау үйірмесі мектеп турнирі үшін бағдарлама әзірлеп жатыр. Қатысушылардың нәтижелері results.txt мәтіндік файлында сақталады, әр қатысушыға бір жол, пішімі «Тегі;сынып;ұпай», мысалы «Ахметов;9;72». Жол «;» таңбасы бойынша бөліктерге бөлінеді. len функциясы жолдағы барлық таңбалардың, соның ішінде «;» таңбасының да санын қайтарады. Файлда алты жазба бар: «Ахметов;9;72», «Беков;10;85», «Ким;9;85», «Сулейменова;11;64», «Дюсенов;10;90», «Омарова;9;58». Қатысушыларды ретке келтіру үшін ұпайлары бойынша кему ретімен көпіршікті сұрыптау қолданылады: өту тізімнің басынан соңына дейін бір рет орындалады, көрші элементтер кезекпен салыстырылады және солдағысы оңдағысынан кіші болса, олардың орындары ауыстырылады. Нәтиженің бақылау санын табу үшін sum_digits(n) рекурсивті функциясы қолданылады: егер n < 10 болса, нәтиже n-ге тең; әйтпесе нәтиже (n mod 10) + sum_digits(n div 10), мұндағы mod — бөлгендегі қалдық, ал div — бөлгендегі бүтін бөлік. Файлды әртүрлі режимде ашуға болады: «r» — тек оқу, «w» — жазу, бұл кезде файлдың бұрынғы мазмұны өшіріледі, «a» — файлдың соңына жазу. Турнирден кейін қатысушылар A пунктінен E пунктіне барады. A, B, C, D, E пункттері екі жақты жолдармен жалғасқан: A–B 4 км, A–C 2 км, B–C 1 км, B–D 5 км, C–D 8 км, D–E 3 км. Бағдарлама бұл жол желісін граф ретінде сақтайды: пункттер — төбелер, жолдар — ұзындығы бар қабырғалар.
Мәтіндегі жол графы бойынша A пунктінен E пунктіне дейінгі ең қысқа маршруттың ұзындығы қандай?
Жауап пен талдауды көрсетуЖауап пен талдауды жасыру
Дұрыс жауап
- D11 км
Талдау
A-дан E-ге баратын маршруттарды салыстырамыз. A–C–B–D–E: 2 + 1 + 5 + 3 = 11 км. A–B–D–E: 4 + 5 + 3 = 12 км. A–C–D–E: 2 + 8 + 3 = 13 км. A–B–C–D–E: 4 + 1 + 8 + 3 = 16 км. Ең қысқа маршрут 11 км. E пунктіне тек D арқылы жетуге болады, сондықтан маршрут D–E бөлігімен аяқталады.