|
Для начинающих на С. Составители
|
Скачать 1.31 Mb. Название | Составители | Анкор | isakova-zarina@mail.ru | Дата | 18.02.2023 | Размер | 1.31 Mb. | Формат файла | | Имя файла | Для начинающих на С .docx | Тип | Задача #943648 | страница | 37 из 38 |
|
Входные данные.
№
| INPUT.TXT
| OUTPUT
| 1
| 3 S->Sabc S->A A->AA
| 2
| Первая строка входного файла INPUT.TXT содержит количество n (1 <= n <= 1000) правил в грамматике. Каждая из последующих n строк содержит по одному правилу. Нетерминальные символы обозначаются заглавными буквами латинского алфавита, терминальные - строчными. Левая часть продукции отделяется от правой символами –>. Правая часть продукции имеет длину от 1 до 30 символов.
#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; }
|
достаточно найти минимальное количество точек между А и В
|
|
|
|