Главная страница
Навигация по странице:

  • Говорят, что правило вывода A –> R содержит непосредственную левую рекурсию, если первым символом строки R является A.

  • Входные данные

  • Выходные данные

  • Входные данные.

  • Выходные данные.

  • Для начинающих на С. Составители


    Скачать 1.31 Mb.
    НазваниеСоставители
    Анкорisakova-zarina@mail.ru
    Дата18.02.2023
    Размер1.31 Mb.
    Формат файлаdocx
    Имя файлаДля начинающих на С .docx
    ТипЗадача
    #943648
    страница37 из 38
    1   ...   30   31   32   33   34   35   36   37   38

    Входные данные.





    INPUT.TXT

    OUTPUT

    1

    3
    S->Sabc
    S->A
    A->AA

    2
    Первая строка входного файла INPUT.TXT содержит количество n (1 <= n <= 1000) правил в грамматике. Каждая из последующих n строк содержит по одному правилу. Нетерминальные символы обозначаются заглавными буквами латинского алфавита, терминальные - строчными. Левая часть продукции отделяется от правой символами –>. Правая часть продукции имеет длину от 1 до 30 символов.

    Выходные данные. В выходной файл OUTPUT.TXT выведите ответ на задачу.





    #include

    #include

    using namespace std;

    int main(){

    char s[300];

    int n,i,k;

    k=0;

    cin>>n;

    for(i=1;i<=n;i++){

    cin>>s;

    if(s[0]==s[3]) k++; }

    cout<
    return 0; }

    Для решения задачи достаточно внимательно прочитать одно предложение: Говорят, что правило вывода A –> R содержит непосредственную левую рекурсию, если первым символом строки R является A.

    Т.е. должно выполняться условие s[0]=s[3]




    Задача 87 (№ 633) ACM World Finals (Сложность: 20%)


    Некоторые из вас, наверно, знают, что ежегодно проводится чемпионат мира по программированию среди студентов (http://acm.baylor.edu). В финал этого соревнования проходят около 80 команд со всего мира.

    Каждая команда состоит из трех человек и имеет название. Напишите программу, которая по краткому названию команды и фамилиям ее участников, строит полное название команды.

    Полное название команды состоит из краткого названия команды и списка фамилий ее участников. Фамилии участников в списке должны быть упорядочены по алфавиту и отделены друг от друга запятыми. Название команды от фамилий участников должно быть отделено двоеточием. После каждого знака препинания должен стоять ровно один пробел.

    Входные данные




    INPUT.TXT

    OUTPUT.TXT

    1

    Dream Team
    Knuth
    Dijkstra
    Cormen

    Dream Team: Cormen, Dijkstra, Knuth

    2

    Ivanovs Team
    Ivanov
    Ivanov
    Ivanov

    Ivanovs Team: Ivanov, Ivanov, Ivanov

    3

    Team
    a
    aa
    aaa

    Team: a, aa, aaa
    Входной файл INPUT.TXT содержит ровно 4 строки. Первая из строк содержит название команды. Каждая из следующих трех строк содержит фамилию одного из членов команды. Длины строк не превышают 50 символов.

    Выходные данные

    Выходной файл OUTPUT.TXT должен содержать ровно одну строку, содержащую полное название команды.

    #include

    using namespace std;

    int main(){

        string s,t,f1,f2,f3,max,min,sr;

        getline(cin,t);

        cin>>f1>>f2>>f3;

        cout<
        if (f1>f2){ min=f2; max=f1;}

        else{ min=f1; max=f2;}

        if (f3>max){sr=max; max=f3;}

        else sr=f3;

        if (f3
        cout<
        return 0; }

    Задача 88 (№ 675) Детали (Сложность: 20%)





    INPUT.TXT

    OUTPUT

    1

    4 6
    AA.BBB
    A....B
    AAA..B
    A..BBB

    1
    Н а клеточном поле N•M расположены две жёсткие детали. Деталь A накрывает в каждой строке несколько (не ноль) первых клеток, деталь B — несколько (не ноль) последних; каждая клетка либо полностью накрыта одной из деталей, либо нет. Деталь B начинают двигать влево, не поворачивая, пока она не упрётся в A хотя бы одной клеткой. Определите, на сколько клеток будет сдвинута деталь B.

    Входные данные. В первой строке входного файла INPUT.TXT записано два числа N и M —число строк и столбцов соответственно (1 ≤ N, M ≤ 100). Далее следуют N строк, задающих расположение деталей. В каждой находится ровно M символов "A" (клетка, накрытая деталью A), "B" (накрытая деталью B) или "." (свободная клетка).

    Выходные данные. В единственную строку выходного файла OUTPUT.TXT нужно вывести одно число — ответ на задачу.


    #include

    #include

    using namespace std;

    int main(){

    string s;

    int n,m,k;

    cin>>n>>m;

    int min=m;

    for(int i=0;i
    k=0;

    cin>>s;

    for(int j=0;j
    if (s[j]=='.') k++;}

    if (k
    cout<
    return 0; }


    достаточно найти минимальное количество точек между А и В



    1   ...   30   31   32   33   34   35   36   37   38


    написать администратору сайта