школьные олимпиады по программированию.Решение и разбор задач.

var a,b:array[1..10000] of char;
i,j,n,v,k:integer;
p:boolean;

begin
assign(input,'input.txt');
assign(output,'output.txt');
reset(input);
rewrite(output);
repeat
inc(i);
read(a[i]);
until eoln;
readln;
repeat
inc(j);
read(b[j]);
inc(n);
until eoln;
for i:=1 to n do
if a[i]=b[i] then
begin
inc(v);
a[i]:='*';
end;
for i:=1 to n do
begin
p:=false;
for j:=1 to n do
if a[i]=b[j] then p:=true;
if p then inc(k);
end;
writeln(v);
writeln(k-v);
end.

Анализ и разбор задачи.Знания и умения.
Условие задачи:

Задача 4.Число соответствий (8 баллов)

Числом соответствий для двух строк a и b будем называть максимально возможное количество пар (a[i],b[j]),образованных из i-го символа строки a и j-го символа строки b, таких,что a[i]=b[j]), и каждый символ из строк a или b входит не более чем в одну пару.Числом точных соответствий для двух строк a и b будем называть максимально возможное количество пар (a[i],b[j]), таких, что a[i]=b[j] и i=j.Числом неточных соответствий для двух строк a и b будем называть разницу между числом соответствий и точных соответствий.

Во входном файле содержится две строки одинаковой длины, состоящие только из прописных латинских букв.Длина строк не превосходит 10000 символов.

В выходной файл вывести два числа, по одному в строке - число точных и число неточных соответствий между строками.

INPUT.TXT
ABCBBE
BADDBA

OUTPUT.TXT
1
2

Алгоритм

1)из входного файла input.txt считываем обе строки с контролем кол-ва символов и конца строки

2)проверяем первую строку на точное совпадение, если true ,выделяем элемент '*'

3)в двойном цикле проверяем первую строку на число совпадений с контролем флага на true

4)выводим количество точных и неточных совпадений

Знать:

  • оператор выбора "if <условие> then <оператор>"
  • циклы с параметром for..
  • логический тип boolean в Паскале


Уметь:
  • работать с входными и выходными файлами input.txt output.txt
домой
Hosted by uCoz