您的位置:首页 > 编程语言 > Java开发

HDOJ 1398 背包DP

2018-01-06 17:37 295 查看
题目在母函数的方法里有。不多说。

#include<bits/stdc++.h>
#define max(a,b) a>b?a:b
#define min(a,b) a<b?a:b
using namespace std ;
typedef long long ll;
typedef unsigned long long ull;

const int MAX = 300+5;
int dp[MAX];
int main(){
int n;
while(cin>>n){
if(!n) break;
memset(dp,0,sizeof(dp));
dp[0] = 1;
for(int i = 1 ; i*i <= n ; i++){
for(int j = i*i ; j <= n ; j++)
dp[j] += dp[j-i*i];
}
cout<<dp
<<endl;
}
return 0;
}


其实总感觉母函数如果不是数字太大。都可以用背包DP的办法来解决
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息