Поиск всех возможных комбинаций чисел для достижения заданной суммы c ++ - PullRequest
0 голосов
/ 11 марта 2020

быстрый вопрос здесь. Я пытаюсь найти все возможные комбинации чисел для достижения заданной суммы в C ++. Как вы думаете, есть способ улучшить мой код, все еще используя рекурсивную функцию? Вот что у меня есть:

void kombinacii(int a[], int index, int num, int decrement) {
       if (decrement < 0) {
          return;
       }
       if (decrement == 0){
           cout<<"\t N = ";
          for (int i = 0; i < index; i++)
             cout << a[i] << "  ";
             cout << endl;
             return;
          }
       int prev;
       if(index == 0)
       prev = 1;
       else
          prev = a[index-1];
       for (int k = prev; k < num ; k++) {
          a[index] = k;
          kombinacii(a, index + 1, num, decrement - k);
       }
    }
    void namiraneNaKombinaciq(int n) {
        int a[50];
       kombinacii(a, 0, n, n);
    }
    int main() {                               
       int n; 
       cout<<"Choose a natural number (N): \n";
       cin>>n;
       namiraneNaKombinaciq(n);
       system("pause");
    }

Также у меня есть вывод:

N = 1 1 1 

Есть ли способ сделать так, чтобы это выглядело так:

N = 1 + 1 + 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...