Count of different ways to express N as the sum of 1, 3 and 4 in C++


Given a positive number N as input. The goal is to find the number of ways in which we can express N as a sum of 1s, 3s and 4s only. For example, if N is 4 then it can be represented as 1+1+1+1, 3+1, 1+3, 4 so the number of ways will be 4.

Let us understand with examples.

For Example

Input -  N=5

Output - Count of different ways to express N as the sum of 1, 3 and 4 are: 6

Explanation -  5 can be represented as:

  • 1+1+1+1+1
  • 1+3+1
  • 3+1+1
  • 1+1+3
  • 4+1
  • 1+4

Input - N=6

Output - Count of different ways to express N as the sum of 1, 3 and 4 are: 9

Explanation - 9 can be represented as:

  • 1+1+1+1+1+1
  • 3+1+1+1
  • 1+3+1+1
  • 1+1+3+1
  • 1+1+1+3
  • 3+3
  • 4+1+1
  • 1+4+1
  • 1+1+4

Approach used in the below program is as follows

In this approach we will use a dynamic programming approach to count the number of ways we can represent N as sum of 1, 3 and 4. Take array arr[i] where i represents the number and arr[i] as ways to represent it as sum.

 The base cases will be 

arr[0]=0 ( No way )

arr[1]=1 ( only one way , 1 )

arr[2]=1 ( only one way, 1+1 )

arr[3]=2 ( 1+1+1, 3 )

Now other numbers 4, 5 … i etc. will have ways as  arr[i-1]+arr[i-3]+arr[i-4].

  • Take a positive number N as input. 
  • Function Expres_sum(int N) takes N and returns the count of different ways to express N as the sum of 1, 3 and 4.
  • Take array arr[N+1] to store the count of ways.
  • Initialize base cases   arr[0] = 1, arr[1] = 1, arr[2] = 1 and arr[3] = 2.
  • Traverse for rest of the values from i=4 to i<=N.
  • Takeaways arr[i] as sum of arr[i - 1] + arr[i - 3] + arr[i - 4].
  • At the end of the for loop return arr[N] as result.

Example

Live Demo

#include <bits/stdc++.h>
using namespace std;
int Expres_sum(int N) {
   int arr[N + 1];
   arr[0] = 1;
   arr[1] = 1;
   arr[2] = 1;
   arr[3] = 2;
   for (int i = 4; i <= N; i++) {
      arr[i] = arr[i - 1] + arr[i - 3] + arr[i - 4];
   }
   return arr[N];
}
int main() {
   int N = 5;
   cout << "Count of different ways to express N as the sum of 1, 3 and 4 are: " << Expres_sum(N);
   return 0;
}

If we run the above code it will generate the following output −

Output

Count of different ways to express N as the sum of 1, 3 and 4 are: 6

Updated on: 29-Jan-2021

601 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements