当前位置:网站首页>放苹果

放苹果

2022-08-11 10:35:00 51CTO


 

放苹果_i++

 

放苹果_i++_02


      
      
/*
放苹果分为两种情况,一种是有盘子为空,一种是每个盘子上都有苹果。
令(m,n)表示将m个苹果放入n个盘子中的摆放方法总数。
1.假设有一个盘子为空,则(m,n)问题转化为将m个苹果放在n-1个盘子上,即求得(m,n-1)即可
2.假设所有盘子都装有苹果,则每个盘子上至少有一个苹果,即最多剩下m-n个苹果,问题转化为将m-n个苹果放到n个盘子上即求(m-n,n)
*/
#include<iostream>
using namespace std;

int getNum( int m, int n){
if( m < 0) return 0;
if( m == 0 || m == 1) return 1;
if( n == 1) return 1;

return getNum( m - n, n) + getNum( m, n - 1);
}

int main(){
int m, n;
while( cin >> m >> n){
int ans = getNum( m, n);
cout << ans << endl;
}

return 0;
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.

      
      
#include<iostream>
#include<vector>
using namespace std;
int main(){
int m, n;
while( cin >> m >> n){
vector < vector < int >> record( m + 1, vector < int >( n + 1, 0));

for( int i = 0; i <= n; i ++)
{
record[ 0][ i] = 1;
record[ 1][ i] = 1;
}
for( int i = 0; i <= m; i ++)
{
record[ i][ 1] = 1;
}
for( int j = 2; j <= n; j ++)
{
for( int i = 2; i <= m; i ++)
record[ i][ j] =( i - j < 0 ? 0: record[ i - j][ j]) + record[ i][ j - 1];
}

cout << record[ m][ n] << endl;
}

return 0;
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.

 

原网站

版权声明
本文为[51CTO]所创,转载请带上原文链接,感谢
https://blog.51cto.com/u_14508933/5566123