Recur29. Дано дерево глубины $$N$$, каждая внутренняя вершина которого имеет $$3$$ непосредственных потомка: $$A$$ с весом $$1$$, $$B$$ с весом $$0$$ и $$C$$ с весом $$-1$$. Корень дерева $$D$$ имеет вес $$0$$. Записать в текстовый файл с данным именем все пути от корня к листьям, удовлетворяющие следующим условиям: суммарный вес элементов для любого начального отрезка пути неположителен, а суммарный вес всех элементов пути равен $$0$$. Порядок перебора путей такой же, как в задании Recur25.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
program Recur29; var F:Text; N:Integer; FN:String; procedure node(Ancestors:String; lvl,weight:integer); var F:Text; begin inc(lvl); if (lvl=N+1) and (weight=0) then begin Assign(F,FN); Append(F); Writeln(F,Ancestors); Close(F); end; if lvl<=N then begin if weight<0 then node(Ancestors+'A',lvl,weight+1); node(Ancestors+'B',lvl,weight); node(Ancestors+'C',lvl,weight-1); end; end; begin Write('N:'); readln(N); Write('FileName:'); readln(FN); Assign(F,FN); Rewrite(F); Close(F); node('D',0,0); end. |
Другие задачи из раздела Recur можно посмотреть здесь.
Комментарии: