Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Какие гири нужно взять? 
:(
    Опции темы
Muerto
Дата 18.11.2010, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: нет
Всего: 4



Есть вот такой код
Код


public class testt {
    
    public static boolean calcWeights(int[] weights, int sum) {
        return calcWeights(weights, 0, sum);
    }
    
    public static boolean calcWeights(int[] weights, int i, int sum) {
        boolean res = false;
        if (sum == 0){
        res = true;
        }
        else if (i >= weights.length){
        res = false;
        }
        else {
            boolean res1=calcWeights(weights, i + 1, sum - weights[i]);
            
            boolean res2=calcWeights(weights, i + 1, sum);
        res = res1 || res2;

        }
        return res;
    }
        
    public static void main(String[] args){
        int sum=165;
        int[] weights={3, 17 ,26, 7, 9, 21, 6, 12, 13, 19, 8, 38};
        System.out.println(calcWeights(weights,sum));
    }
}



Вернет true если с гирями в массиве weights можно взвесить вес sum

Но фишка такая, теперь не хочу вес, я хочу что бы показывало какие гири, но не просто распечатать
а что бы к примеру если 

Код

sum=165;
int[] weights={3, 17 ,26, 7, 9, 21, 6, 12, 13, 19, 8, 38};


То должно распечатать


Код

1 1 1 1 1 1 0 1 1 1 0 1


Я игрался игрался, мне удалось таким образом
Код

res = res1 || res2;
        if(res1){
            System.out.print("1 ");
        }
        if(res2){
            System.out.print("0 ");
        }
        

напечатать
Код

1 0 1 1 1 0 1 1 1 1 1 1 


Но как сделать в правльном порядке, я не додумался  smile 


--------------------
user posted image
PM MAIL   Вверх
jk1
Дата 19.11.2010, 00:22 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Код

  private static List<Integer> result = new ArrayList<Integer>();

    public static boolean calcWeights(int[] weights, int sum) {
        return calcWeights(weights, 0, sum);
    }

    public static boolean calcWeights(int[] weights, int i, int sum) {
        boolean res = false;
        if (sum == 0) {
            res = true;
        } else if (i >= weights.length) {
            res = false;
        } else {
            boolean res1 = calcWeights(weights, i + 1, sum - weights[i]);
            boolean res2 = calcWeights(weights, i + 1, sum);
            res = res1 || res2;
            if (res){
                result.add(res1 ? 1 : 0);
            }

        }
        return res;
    }

    public static void main(String[] args) {
        int sum = 165;
        int[] weights = {3, 17, 26, 7, 9, 21, 6, 12, 13, 19, 8, 38};
        calcWeights(weights,sum);
        Collections.reverse(result);
        for (Integer i : result){
            System.out.print(i+" ");
        }
    }



--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
Muerto
Дата 19.11.2010, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: нет
Всего: 4



Большое спасибо  smile 


--------------------
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0447 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.