| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Object Pascal: кроссплатформенные технологии > перебор с возвратом |
| Автор: GOSHA_BL 8.6.2007, 10:49 | ||
| заданы целые числа A1,A2,..,An,An+1 (n<=10)Определить имеется уравнение A1*X1+A2*X2+...+An*Xn=An+1 хотя бы одно решение при котором каждая из переменных X1,X2,..,Xn равна 0 или единице. Найти все такие решения. пример 1*1+2*0+3*0+4*1=5 вывод решения 1 0 0 1 1*0+2*1+3*1+4*0=5 вывод решения 0 1 1 0 нужно решить с помощью перебора с возвратом!!!! мой текст программы (нужно процедуру 'init' сделать обязательно рекурсивной!!!!) буду признателен если поможете до воскресенья! жду ответа как соловей лета
Про теги не забывай ... |
| Автор: volvo877 8.6.2007, 11:47 | ||
Так что-ли?
|
| Автор: GOSHA_BL 8.6.2007, 12:06 |
| да вроде так!! Спасибо большое!! можете ли вы еще краткие комменты про переменные написать а то не совсем ясны переменные.(массив mask и values и the_arr-что там хранится),суть функции check,не очень понятна, как она работает. |
| Автор: volvo877 8.6.2007, 12:29 |
| То, что у тебя хранилось в массиве A, у меня называется values, то что у тебя было B - это mask... Чего не понятно? Находишь суммы всех произведений a[i]*b[i], и проверяешь эту сумму на равенстве с последним элементом массива (там, где хранится сумма).... Поскольку проверка (на равенство) возвращает результат типа Boolean, его сразу можно рассматривать как результат функции, ни к чему добавлять еще один If. |
| Автор: GOSHA_BL 8.6.2007, 12:58 |
| щас в пошаговом все посмотрел, все понял, еще раз спсибо!! p.s меня просто эта строча смутла , мытак никогд не писали :( "check := (s = a[count + 1]);" |