用 C++ 表示 N 为 1、3 和 4 的和的不同方法的计数
给定一个正数 N 作为输入。目标是找到我们可以用仅 1、3 和 4 的和来表示 N 的方法的数量。例如,如果 N 是 4,则它可以表示为 1+1+1+1、3+1、1+3、4,因此方法的数量为 4。
让我们通过例子来理解。
例如
输入 - N=5
输出 - 用 1、3 和 4 的和表示 N 的不同方法的计数为:6
说明 - 5 可以表示为
- 1+1+1+1+1
- 1+3+1
- 3+1+1
- 1+1+3
- 4+1
- 1+4
输入 - N=6
输出 - 用 1、3 和 4 的和表示 N 的不同方法的计数为:9
说明 - 9 可以表示为
- 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
以下程序中使用的方法如下
在这种方法中,我们将使用动态规划方法来计算我们可以用 1、3 和 4 的和来表示 N 的方法的数量。取数组 arr[i],其中 i 表示数字,arr[i] 表示将其表示为和的方法。
基本情况将是
arr[0]=0(无方法)
arr[1]=1(只有一种方法,1)
arr[2]=1(只有一种方法,1+1)
arr[3]=2(1+1+1,3)
现在其他数字 4、5 … i 等将具有以下方法:arr[i-1]+arr[i-3]+arr[i-4]。
- 将一个正数 N 作为输入。
- 函数 Expres_sum(int N) 获取 N 并返回用 1、3 和 4 的和表示 N 的不同方法的数量。
- 取数组 arr[N+1] 来存储方法的数量。
- 初始化基本情况 arr[0] = 1、arr[1] = 1、arr[2] = 1 和 arr[3] = 2。
- 遍历从 i=4 到 i<=N 的其余值。
- 将 arr[i] 作为 arr[i - 1] + arr[i - 3] + arr[i - 4] 的和。
- 在 for 循环结束时,返回 arr[N] 作为结果。
示例
#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;
}如果我们运行以上代码,它将生成以下输出:
输出
Count of different ways to express N as the sum of 1, 3 and 4 are: 6
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP