用C++计算将‘n’表示为奇数之和的方法数


给定一个整数n作为输入。目标是找到可以将‘n’表示为奇数之和的方法的数量。例如,如果n是3,它可以表示为和(1+1+1)和(3),所以共有2种方法。

例如

输入

n=6

输出

Count of ways to express ‘n’ as sum of odd integers are: 8

解释

The ways in which we can express ‘n’ as sum of odd integers −
1. 1+1+1+1+1+1
2. 3+1+1+1
3. 1+3+1+1
4. 1+1+3+1
5. 1+1+1+3
6. 3+3
7. 1+5
8. 5+1

输入

n=9

输出

Count of ways to express ‘n’ as sum of odd integers are: 34

解释

The some of the ways in which we can express ‘n’ as sum of odd integers:
1. 1+1+1+1+1+1+1+1+1
2. 3+3+3
3. 5+3+1
4. 7+1+1
5. ….and other such combinations

以下程序中使用的算法如下

在这种方法中,我们将检查将数字表示为奇数之和的方法,这些方法来自之前的数字,即第n-1个和第n-2个数字。方法数将为ways(n-1) + ways(n-2)。

  • 输入一个整数n。

  • 函数odd_ways(int n)接收一个数字并返回将‘n’表示为奇数之和的方法数。

  • 创建一个长度为n+1的数组arr,用于存储将数字表示为奇数之和的方法数。

  • 对于数字0,没有这样的方法,因此将arr[0]设置为0。

  • 对于数字1,只有一种方法,因此将arr[1]设置为1。

  • 对于其余数字,我们可以将arr[i]设置为arr[i-1]+arr[i-2],其中i在2到n之间。

  • 最后,我们得到arr[n],表示将n表示为奇数之和的方法数。

  • 返回arr[n]作为结果。

示例

 在线演示

#include<iostream>
using namespace std;
int odd_ways(int n){
   int arr[n+1];
   arr[0] = 0;
   arr[1] = 1;
   for(int i = 2; i <= n; i++){
      arr[i] = arr[i-1] + arr[i-2];
   }
   return arr[n];
}
int main(){
   int n = 6;
   cout<<"Count of ways to express ‘n’ as sum of odd integers are: "<<odd_ways(n);
   return 0;
}

输出

如果我们运行上面的代码,它将生成以下输出:

Count of ways to express ‘n’ as sum of odd integers are: 8

更新于:2021年1月5日

239 次查看

启动您的职业生涯

完成课程后获得认证

开始
广告