IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> помогите решить таску, нада решить 1 таску
xxx000
сообщение 25.05.2010 20:26
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской

Репутация: -  0  +


Имеется набор микросхем и несколько универсальных переходников. Каждая микросхема имеет некоторое количество контактов с двух сторон. Переходник может соединить две микросхемы с различным числом контактов. Микросхемы соединяются правой стороной к левой. Ваша программа должна определить возможно ли их последовательное соединение.

Порядок ввода исходных данных:

N - число микросхем
K - число переходников
L1R1 - количество контактов с двух (L1 и R1) сторон
...
LNRN - количество контактов с двух (LN и RN) сторон
Порядок вывода результатов:

YES/NO
Ограничения:

0 < N < 11, 0 <= K, 0 <= LN,RN <= 9
Пример ввода

5
1
12
23
33
44
45
Пример вывода

YES
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 27.05.2010 20:07
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


в лоб, но работает.

uses crt;

type t_chip = record
left : integer;
right : integer;
end;


const n = 5;
const k = 1;

type t_sequence = array [ 1..n ] of integer;


const chips: array[ 1..n ] of t_chip =
(
(left:1; right:2),
(left:2; right:3),
(left:3; right:3),
(left:4; right:4),
(left:4; right:5)
);

var sequence: t_sequence = (1, 2, 3, 4, 5);
var found: boolean = false;

procedure dump(const s: t_sequence );
var
i: integer;
begin
for i := 1 to n do write(s[i]:3);
writeln;
end;

procedure _swap(var seq: t_sequence; a, b: integer);
var
t: integer;
begin
t := seq[a];
seq[a] := seq[b];
seq[b] := t;
end;

function need_adapters( const seq: t_sequence ): integer;
var
i, count: integer;
begin
count := 0;
for i := 1 to n - 1 do
if ( chips[seq[i]].right <> chips[seq[i + 1]].left ) then
inc( count );
need_adapters := count;
end;

function find_sequence( idx: integer; seq : t_sequence ): boolean;
var
i, t, need_adp: integer;
begin
if ( found ) then exit; { для вывода всех решений убрать }

if ( idx = n ) then begin
need_adp := need_adapters( seq );

if ( need_adp <= k ) then begin
dump( seq );
found := true;
end;
end;

for i := n downto idx + 1 do begin
_swap( seq, idx + 1, i);
find_sequence( idx + 1, seq );
_swap( seq, idx + 1, i);
end;

end;

begin
clrscr;
find_sequence( 0, sequence );

if ( found ) then writeln('YES') else writeln('NO');
readln;
end.




--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 25.04.2024 6:37
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"