Considere un juego en el que un jugador puede anotar 3, 5 o 10 puntos en un movimiento. Dada una puntuación total n, encuentre el número de formas de alcanzar la puntuación dada.
Ejemplos:
Input: n = 20 Output: 4 There are following 4 ways to reach 20 (10, 10) (5, 5, 10) (5, 5, 5, 5) (3, 3, 3, 3, 3, 5) Input: n = 13 Output: 2 There are following 2 ways to reach 13 (3, 5, 5) (3, 10)
C++
// A C++ program to count number of // possible ways to a given score // can be reached in a game where a // move can earn 3 or 5 or 10 #include <iostream> using namespace std; // Returns number of ways // to reach score n int count(int n) { // table[i] will store count // of solutions for value i. int table[n + 1], i; // Initialize all table // values as 0 for(int j = 0; j < n + 1; j++) table[j] = 0; // Base case (If given value is 0) table[0] = 1; // One by one consider given 3 moves // and update the table[] values after // the index greater than or equal to // the value of the picked move for (i = 3; i <= n; i++) table[i] += table[i - 3]; for (i = 5; i <= n; i++) table[i] += table[i - 5]; for (i = 10; i <= n; i++) table[i] += table[i - 10]; return table[n]; } // Driver Code int main(void) { int n = 20; cout << "Count for " << n << " is " << count(n) << endl; n = 13; cout <<"Count for "<< n<< " is " << count(n) << endl; return 0; } // This code is contributed // by Shivi_Aggarwal
C
// A C program to count number of possible ways to a given score // can be reached in a game where a move can earn 3 or 5 or 10 #include <stdio.h> // Returns number of ways to reach score n int count(int n) { // table[i] will store count of solutions for // value i. int table[n+1], i; // Initialize all table values as 0 memset(table, 0, sizeof(table)); // Base case (If given value is 0) table[0] = 1; // One by one consider given 3 moves and update the table[] // values after the index greater than or equal to the // value of the picked move for (i=3; i<=n; i++) table[i] += table[i-3]; for (i=5; i<=n; i++) table[i] += table[i-5]; for (i=10; i<=n; i++) table[i] += table[i-10]; return table[n]; } // Driver program int main(void) { int n = 20; printf("Count for %d is %d\n", n, count(n)); n = 13; printf("Count for %d is %d", n, count(n)); return 0; }
Java
// Java program to count number of // possible ways to a given score // can be reached in a game where // a move can earn 3 or 5 or 10 import java.util.Arrays; class GFG { // Returns number of ways to reach score n static int count(int n) { // table[i] will store count of solutions for // value i. int table[] = new int[n + 1], i; // Initialize all table values as 0 Arrays.fill(table, 0); // Base case (If given value is 0) table[0] = 1; // One by one consider given 3 // moves and update the table[] // values after the index greater // than or equal to the value of // the picked move for (i = 3; i <= n; i++) table[i] += table[i - 3]; for (i = 5; i <= n; i++) table[i] += table[i - 5]; for (i = 10; i <= n; i++) table[i] += table[i - 10]; return table[n]; } // Driver code public static void main (String[] args) { int n = 20; System.out.println("Count for "+n+" is "+count(n)); n = 13; System.out.println("Count for "+n+" is "+count(n)); } } // This code is contributed by Anant Agarwal.
Python3
# Python program to count number of possible ways to a given # score can be reached in a game where a move can earn 3 or # 5 or 10. # Returns number of ways to reach score n. def count(n): # table[i] will store count of solutions for value i. # Initialize all table values as 0. table = [0 for i in range(n+1)] # Base case (If given value is 0) table[0] = 1 # One by one consider given 3 moves and update the # table[] values after the index greater than or equal # to the value of the picked move. for i in range(3, n+1): table[i] += table[i-3] for i in range(5, n+1): table[i] += table[i-5] for i in range(10, n+1): table[i] += table[i-10] return table[n] # Driver Program n = 20 print('Count for', n, 'is', count(n)) n = 13 print('Count for', n, 'is', count(n)) # This code is contributed by Soumen Ghosh
C#
// C# program to count number of // possible ways to a given score // can be reached in a game where // a move can earn 3 or 5 or 10 using System; class GFG { // Returns number of ways to reach // score n static int count(int n) { // table[i] will store count // of solutions for value i. int []table = new int[n + 1]; // Initialize all table values // as 0 for(int j = 0; j < n+1; j++) table[j] = 0; // Base case (If given value is 0) table[0] = 1; // One by one consider given 3 // moves and update the table[] // values after the index greater // than or equal to the value of // the picked move for (int i = 3; i <= n; i++) table[i] += table[i - 3]; for (int i = 5; i <= n; i++) table[i] += table[i - 5]; for (int i = 10; i <= n; i++) table[i] += table[i - 10]; return table[n]; } // Driver code public static void Main () { int n = 20; Console.WriteLine("Count for " + n + " is " + count(n)); n = 13; Console.Write("Count for " + n + " is " + count(n)); } } // This code is contributed by nitin mittal.
PHP
<?php // PHP program to count number of // possible ways to a given score // can be reached in a game where // a move can earn 3 or 5 or 10 // Returns number of ways to reach // score n function counts($n) { // table[i] will store count // of solutions for value i. // Initialize all table // values as 0 for($j = 0; $j < $n + 1; $j++) $table[$j] = 0; // Base case (If given value is 0) $table[0] = 1; // One by one consider given 3 moves // and update the table[] values after // the index greater than or equal to // the value of the picked move for ($i = 3; $i <= $n; $i++) $table[$i] += $table[$i - 3]; for ($i = 5; $i <= $n; $i++) $table[$i] += $table[$i - 5]; for ($i = 10; $i <= $n; $i++) $table[$i] += $table[$i - 10]; return $table[$n]; } // Driver Code $n = 20; echo "Count for "; echo($n); echo (" is "); echo counts($n); $n = 13; echo ("\n") ; echo "Count for "; echo($n); echo (" is " ); echo counts($n); // This code is contributed // by Shivi_Aggarwal ?>
Javascript
<script> // A JavaScript program to count number of // possible ways to a given score // can be reached in a game where a // move can earn 3 or 5 or 10 // Returns number of ways // to reach score n function count(n) { // table[i] will store count // of solutions for value i. let table = new Array(n + 1), i; // Initialize all table // values as 0 for(let j = 0; j < n + 1; j++) table[j] = 0; // Base case (If given value is 0) table[0] = 1; // One by one consider given 3 moves // and update the table[] values after // the index greater than or equal to // the value of the picked move for (i = 3; i <= n; i++) table[i] += table[i - 3]; for (i = 5; i <= n; i++) table[i] += table[i - 5]; for (i = 10; i <= n; i++) table[i] += table[i - 10]; return table[n]; } // Driver Code let n = 20; document.write("Count for " + n + " is " + count(n) + "<br>"); n = 13; document.write("Count for "+ n + " is " + count(n) + "<br>"); // This code is contributed by Surbhi Tyagi. </script>
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA