![]() |
#34 |
Участник
|
Цитата:
Сообщение от CDR
![]() Ура! Это решение вроде как работает для всех n!
Единственный серьезный минус - количество проходов цикла. ... И еще желательно в решении не используются нестандартные типы данных: контейнер, множество. Лучше все-таки обойтись стандартными типами данных - целые и вещественные числа, строки, а так же их массивы. Небольшая оптимизация цикла и используемых типов данных - и решение получится идеальным ![]() Теперь насчет стандартных типов данных. Все правильно, но только для программиста на X++ container и set, являются более стандартными типами, чем массив, ИМХО. Я не припомню что-то практических задач в Axapta, где мне бы потребовалось использовать массив... А на закуску "красивое" решение, вообще без циклов ![]() X++: #define.N(5) static void job001(Args _args) { str 1 a[#N]; void init() { a[1] = 'a'; a[2] = 'b'; a[3] = 'c'; a[4] = 'd'; a[5] = 'e'; } str makestr(str 1 b[#N], int level = 1) { return (level<#N)?b[level]+makestr(b,level+1):b[level]; } void show (str 1 b[#N]) { ; //info(b[1]+b[2]+b[3]+b[4]+b[5]); info(makestr(b)); } void f(str 1 b[#N], int level=1, int shift=1) { str 1 c[#N]; ; if (level < #N-1) { f(b,level+1,1); } if(shift <= #N-level) { c=b; c[level] = b[level+shift]; c[level+shift] = b[level]; show(c); f(c,level,shift+1); } } ; init(); show(a); f(a); } Последний раз редактировалось dn; 23.09.2008 в 11:59. |
|
|
За это сообщение автора поблагодарили: CDR (1). |
Теги |
логические задачи |
|
![]() |
||||
Тема | Ответов | |||
ARIS-задачи | 9 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|