М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации

Перед отправкой Терминатора Т-800 в для Джона Коннора (события 2 части) обнаружилось, что при анализе текстовых документов, OCR-модуль машины допускает ошибки при чтении символов в записи моделей терминаторов. Времени на повторное обучение нейронной сети нет, поэтому было принято решение написать hot-fix на символы “T”, “0”, “1”, “8” и “-“. При чтении Терминатор каждый символ переводит в матрицу 10 на 10 точек, где 1 означает наличие заполнения, а 0 – отсутствие. Символы распознаются следующим образом:

“T” - Два прямоугольника лежащих друг на друге, левая граница верхнего прямоугольника левее нижнего, правая граница верхнего прямоугольника правее нижнего.

“0” - Заполненный прямоугольник с прямоугольным вырезом внутри, границы выреза не лежат на сторонах внешнего прямоугольника.

“8” - Заполненный прямоугольник с 2мя прямоугольными вырезами внутри, границы вырезов не лежат на сторонах внешнего прямоугольника, границы вырезов не пересекаются, нижняя граница одного выреза выше другого.

“1” - Заполненный прямоугольник, ширина прямоугольника строго меньше его длины.

“-“ - Заполненный прямоугольник, ширина прямоугольника строго больше его длины.

Необходимо, чтоб остальные комбинации интерпретировались символом “Х”.

Напишите программу для решения поставленной задачи.

На вход программе подается 10 строк состоящих из 10 символов “0” или “1”. Программа должна выводить один из символов “T”, “0”, “1”, “8”, “-“ или “X”.

Sample Input:

0000000000
0001110000
0001010000
0001010000
0001110000
0001110000
0001010000
0001010000
0001110000
0000000000
Sample Output:

8
У меня нет даже идей,как это решить. Буду рада любой

👇
Открыть все ответы
Ответ:
ivoleg13
ivoleg13
05.04.2020

N = int(input())

if N == 1:

   exit(0)

 

bacteria = [0] * N

for i in range(0, N):

   bacteria[i] = int(input())

 

prefix_sum = [bacteria[0]] * N

for i in range(1, N):

   prefix_sum[i] = prefix_sum[i - 1] + bacteria[i]

ans = [0] * N

if bacteria[N-1] > bacteria[0]:

   ans[N - 1] = 1

for i in reversed(range(2, N)):

   if ans[i] == 1:

       prev = i - 1

       if prefix_sum[prev] > bacteria[i] and bacteria[0] < bacteria[prev]:

           ans[prev] = 1

for i in range(N):

   print(ans[i])

Объяснение:

g++

4,6(13 оценок)
Ответ:

#include <iostream>

#include <vector>

#include <set>

#define ll long long

using namespace std;

signed main() {

   ll n;

   cin >> n;

   vector<pair<ll,ll>> a(n);

   vector<ll> pref(n,0),d(n,0),ans(n,0);

   set<ll> s;

   for(ll i = 0; i < n; i++){

       cin >> a[i].first;

       a[i].second = i;

       s.insert(a[i].first);

       if(i == 0)

           pref[i] = a[i].first;

       else

           pref[i] = pref[i-1] + a[i].first;

       d[i] = s.size();

   }

   if(d[n-1] > 1 || n == 1)

       ans[a[n-1].second] = 1;

   for(ll i = n - 2; i >= 0; i--){

       if(pref[i] > a[i + 1].first && ans[a[i+1].second] == 1 && d[i] > 1)

           ans[a[i].second] = 1;

   }

   for(ll i = 0; i < n; i++)

       cout << ans[i] << " ";

}

4,4(53 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ