题解,求关注
2024-06-30 10:25:14
发布于:浙江
12阅读
0回复
0点赞
#include <iostream>
#include <algorithm>
using namespace std ;
int dp[ 35 ][ 550 ];
int main ()
{
int n, m;
cin >> n >> m;
int sum = 0 ;
dp[ 0 ][ 0 ] = 1 ;
for ( int i = 1 ; i <= n; i++)
{
for ( int j = 0 ; j <= (i+ 1 )*i/ 2 ; j++)
{
//dp[i][j] 表⽰ 1~i 的数字拆分成两个⼦数组求和的差的绝对值为 j 的⽅案数。
dp[i][j] = dp[i -1 ][j+i] + dp[i -1 ][ abs (j-i)];
}
}
if (m == 0 )
cout << dp[n][m] / 2 << endl ;
else
cout << dp[n][m] << endl ;
return 0 ;
}
这里空空如也
有帮助,赞一个