Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2015, 01:57   #1
Luchfan12
Пользователь
 
Регистрация: 01.03.2014
Сообщений: 37
По умолчанию Комбинации сумм

Есть натуральное число N.Его можно записать в виде суммы натуральных слагаемых N = a1 + a2 + a3 + ... + ak. Нужно вывести все комбинации сумм без повторений (то есть если программа выведет 1+2+3 и 1+3+2, то это будет считаться повторением)
Luchfan12 вне форума Ответить с цитированием
Старый 17.04.2015, 08:32   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

И в чем именно проблема? Что делать пробовали?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 17.04.2015, 23:13   #3
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Реализовать реально, но хотелось бы увидеть самостоятельные попытки... Дальше подскажем, направим.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 20.04.2015, 13:11   #4
Luchfan12
Пользователь
 
Регистрация: 01.03.2014
Сообщений: 37
По умолчанию

Цитата:
Сообщение от Bugrimov Посмотреть сообщение
Реализовать реально, но хотелось бы увидеть самостоятельные попытки... Дальше подскажем, направим.
Код:
package combinations.of.summ;
import java.util.Scanner;
 
public class CombinationsOfSumm {
static int a[] = new int[100];
 
 
static void dec(int n , int k, int i) {
    
    if (n<0) return; //ничего не раскладываем
    // если 0 то раскладывать нечего
    if (n == 0) { 
        
        int j;
        for (j = i-1; j> -1; j--) {
            System.out.print (a[j]);
         }
        System.out.print("\n");
        
    }
    // в противном случае
    else {
        
        if (n - k >=0) {
            
            a[i] = k;
            dec(n - k, k, i+1);
            
            
        }
        if (k-1 >0) {
            dec(n, k-1, i);
            
        }
        
    }
    return;
}
    
    public static void main(String[] args) {
        int m,i,j;
        Scanner scanner = new Scanner(System.in);
        
        
        System.out.print("Задайте число ");
        m = scanner.nextInt();
        for (i=0; i<=m; ++i) {
            
            a[i] = 0;
            }
        System.out.println("Комбинации сумм: ");
        dec(m, m, 0);
    }
    
}
Написал программу, она выводит комбинации сумм в таком порядке:
Вводим 6 с консоли имеем:
6
15
24
114
33
123
1113
222
1122
11112
111111
Но нужно чтобы она выводила комбинации в обратном порядке то есть:
6
51
42
411
33
321
3111
222
2211
21111
111111
Как это реализовать?
Luchfan12 вне форума Ответить с цитированием
Старый 20.04.2015, 14:01   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а разве просто изменить вывод на обратный не сделает то, что Вам надо?!!

Код:
// если 0 то раскладывать нечего
    if (n == 0) { 
        
        for (int j=0; j<i; j++) {
            System.out.print (a[j]);
         }
        System.out.print("\n");
        
    }
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывести комбинации с 8 по 3 ? Dav1 Microsoft Office Excel 3 05.11.2013 10:18
Возможные комбинации firephenix Помощь студентам 1 01.04.2011 02:19
Комбинации клавиш Alessandro Rossi Свободное общение 8 28.11.2010 23:30
Запрещённые комбинации LuckyOwner Microsoft Office Excel 7 25.07.2010 10:10
Найти комбинации zzzzz Помощь студентам 3 29.09.2008 19:44