N个鸡蛋放到M个篮子中,篮子不能为空,要满足:对任意不大于N的数量,能用若干个篮子中鸡蛋的和表示。写出函数,对输入整数N和M,输出所有可能的鸡蛋的放法。

比如对于9个鸡蛋5个篮子
解至少有三组:
1 2 4 1 1
1 2 2 2 2
1 2 3 2 1

思路:

C/C++ code
int F( int p[], int n, int m ) { if( n < m ) return 0; if( m == 1 ) return !( 1 - n ); int sum = 0; for( int i = ( n - 1 ) / ( m - 1 ); i <= ( n + 1 ) / 2; i++ ) { if( i > p[m] ) break; p[m - 1] = i; sum += F( p, n - i, m - 1 ); } return sum; }
int main()
{
 
int N, M; cin >> N >> M;
 
int P[64] = {0};
  P[
0] = 1;
  P[M]
= N;
  cout
<< "Count: " << F( P, N, M ) << endl;
 
return 0;
}

相关文章:

  • 2021-11-27
  • 2022-01-25
  • 2021-11-30
  • 2022-12-23
  • 2022-02-17
  • 2021-10-12
  • 2021-09-10
猜你喜欢
  • 2021-11-07
  • 2022-12-23
  • 2022-02-10
  • 2021-11-03
  • 2018-02-09
  • 2022-01-05
相关资源
相似解决方案