Dice Throw | DP | The main function that returns the number of ways to get sum ' x ' with ' n ' dice and ' m ' with m faces . ; Create a table to store the results of subproblems . One extra row and column are used for simplicity ( Number of dice is directly used as row index and sum is directly used as column index ) . The entries in 0 th row and 0 th column are never used . ; Table entries for only one dice ; Fill rest of the entries in table using recursive relation i : number of dice , j : sum ; Return value ; Driver Code
function findWays ( m , n , x ) { let table = new Array ( n + 1 ) ; for ( let i = 0 ; i < ( n + 1 ) ; i ++ ) { table [ i ] = new Array ( x + 1 ) ; for ( let j = 0 ; j < ( x + 1 ) ; j ++ ) { table [ i ] [ j ] = 0 ; } } for ( let j = 1 ; j <= m && j <= x ; j ++ ) table [ 1 ] [ j ] = 1 ; for ( let i = 2 ; i <= n ; i ++ ) { for ( let j = 1 ; j <= x ; j ++ ) { for ( let k = 1 ; k < j && k <= m ; k ++ ) table [ i ] [ j ] += table [ i - 1 ] [ j - k ] ; } } return table [ n ] [ x ] ; } document . write ( findWays ( 4 , 2 , 1 ) + " " ) ; document . write ( findWays ( 2 , 2 , 3 ) + " " ) ; document . write ( findWays ( 6 , 3 , 8 ) + " " ) ; document . write ( findWays ( 4 , 2 , 5 ) + " " ) ; document . write ( findWays ( 4 , 3 , 5 ) + " " ) ;