Member 13932865 Ответов: 2

Ни один из способов, которыми вы можете получить сумму "всего", когда брошены n кубиков с m способами


#include <iostream>
#include <vector>
using namespace std;
vector<int> vec;//for counting total number of ways.
int sum(int m,int n,int total);//function prototype

int main()
{
    int n,m,total;
    cout<<"Enter the values of n,m,total respectively"<<endl;
    cin>>n>>m>>total;
    sum(m,n,total);
    cout<<vec.size()<<endl;
    return 0;
}
int sum(int m,int n,int total){

for(int i=1;i<=m;i++){
         if(n>=0&&total-i==0)
                 vec.push_back(0);//size of vector increases with each pushback,and no 
                                  //no of ways =vec.size()
                         
             if(n<0)
                    return 0;
               else
                     return  sum(m,n-1,total-i);

}

}


Что я уже пробовал:

я пробовал искать решение для подобной проблемы,но не смог найти ни одного,любая помощь приветствуется.!!

Patrice T

Покажите пример ввода, ожидаемый выход и ваш фактический выход.
даны дополнительные объяснения.

Richard MacCutchan

Сначала вам нужно выяснить алгоритм решения вашего вопроса. Только после того, как вы знаете, что вы должны начать писать любой код.

2 Ответов

Рейтинг:
1

CPallini

Жестокий подход (есть и лучшие способы) был бы рассчитан на то, что 0 к (m^n-1) На каждой итерации счетчик представляет допустимую конфигурацию кубиков, и вы можете проверить, составляет ли сумма кубиков total.
Напр.
Предположим, у вас есть два 6-ходовых кубика (т. е. n=2, m=6) и total = 5.
Тогда вам придется перебирать с 0 к 6^2-1=35

counter  dice-1  dice-0  sum
  0        1        1     2
  1        1        2     3
  2        1        3     4
  3        1        4     5  OK
  4        1        5     6
  5        1        6     7
  6        2        1     3
  7        2        2     4
  8        2        3     5  OK
  9        2        4     6 
 10        2        5     7
 11        2        6     8
 ...........................
 ...........................
 35        6        6    12


Рейтинг:
0

OriginalGriff

Мы не делаем домашнее задание: оно задано не просто так. Она существует для того, чтобы вы думали о том, что вам сказали, и пытались понять это. Он также существует для того, чтобы ваш наставник мог определить области, в которых вы слабы, и сосредоточить больше внимания на корректирующих действиях.

Попробуйте сами, возможно, вы обнаружите, что это не так сложно, как вы думаете! Начните с исследования "комбинаций и перестановок" и посмотрите, какие алгоритмы вы можете найти.

Если вы столкнетесь с конкретной проблемой, то, пожалуйста, спросите об этом, и мы сделаем все возможное, чтобы помочь. Но мы не собираемся делать все это для вас!