動態規划--鳴人的影分身


題目大概:

鳴人的m個查克拉分到n個分身中,有多少種分法。

思路:

dp[m][n]表示前m個查克拉分到前n個分身的方法數。.

1。。。第n個分身不用查克拉,dp[m][n]=dp[m][n-1]。

2。。。用查克拉,每個分身至少用1個。dp[m][n]=dp[m-k][n].。

感想:

剛開始這個題竟然想錯了qaq。

代碼:

#include <iostream>
#include <cstring>
using namespace std;

int main()
{int t,n,m,dp[11][11];
cin>>t;
memset(dp,0,sizeof(dp));
for(int i=0;i<t;i++)
{cin>>n>>m;
for(int j=1;j<=m;j++)dp[0][j]=1;

for(int j=1;j<=n;j++)
{for(int k=1;k<=m;k++)
{
if(j-k>=0)dp[j][k]=dp[j][k-1]+dp[j-k][k];
else dp[j][k]=dp[j][j];
}


}

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

return 0;
}



注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com