ACboy needs your help hdu 分组背包问题
2017-10-17 18:00
281 查看
Description
ACboy has N courses this term, and he plans to spend at most M days on study.Of course,the profit he will gain from different course depending on the days he spend on it.How to arrange the M days for the N courses to maximize the
profit?
Input
The input consists of multiple data sets. A data set starts with a line containing two positive integers N and M, N is the number of courses, M is the days ACboy has. Next follow a matrix A[i][j], (1<=i<=N<=100,1<=j<=M<=100).A[i][j]
indicates if ACboy spend j days on ith course he will get profit of value A[i][j]. N = 0 and M = 0 ends the input.
Output
For each data set, your program should output a line which contains the number of the max profit ACboy will gain.
Sample Input
2 2 1 2 1 3 2 2 2 1 2 1 2 3 3 2 1 3 2 1 0 0
Sample Output
3 4 6
题意: 有n个课程,m天时间,接下来n*m的矩阵表示该课程花费1~m天时间所获能得的价值,求花费m天时间能获得的最大价值
背包:
分组背包模板题..将每一天看成一个组,每组只能选一个。
代码实现:
ACboy has N courses this term, and he plans to spend at most M days on study.Of course,the profit he will gain from different course depending on the days he spend on it.How to arrange the M days for the N courses to maximize the
profit?
Input
The input consists of multiple data sets. A data set starts with a line containing two positive integers N and M, N is the number of courses, M is the days ACboy has. Next follow a matrix A[i][j], (1<=i<=N<=100,1<=j<=M<=100).A[i][j]
indicates if ACboy spend j days on ith course he will get profit of value A[i][j]. N = 0 and M = 0 ends the input.
Output
For each data set, your program should output a line which contains the number of the max profit ACboy will gain.
Sample Input
2 2 1 2 1 3 2 2 2 1 2 1 2 3 3 2 1 3 2 1 0 0
Sample Output
3 4 6
题意: 有n个课程,m天时间,接下来n*m的矩阵表示该课程花费1~m天时间所获能得的价值,求花费m天时间能获得的最大价值
背包:
分组背包模板题..将每一天看成一个组,每组只能选一个。
代码实现:
1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cstring> 5 using namespace std; 6 int max(int a,int b) 7 { 8 return a>b?a:b; 9 } 10 int main() 11 { 12 int n,m,i,j,k,a[105][105],dp[105]; 13 while(cin>>n>>m&&n&&m) 14 { 15 for(i=1;i<=n;i++) 16 for(j=1;j<=m;j++) 17 cin>>a[i][j]; 18 memset(dp,0,sizeof(dp)); 19 for(i=1;i<=n;i++)//分组 20 for(j=m;j>0;j--)//容量 21 for(k=1;k<=j;k++)//第i组数据 22 dp[j]=max(dp[j],dp[j-k]+a[i][k]); 23 cout<<dp[m]<<endl; 24 } 25 return 0; 26 }
相关文章推荐
- HDU-1712 ACBoy needs your help (分组背包问题)
- 动态规划:HDU1712-ACboy needs your help(分组背包问题)
- HDU 1712 ACboy needs your help (分组背包)
- HDU 1712 ACboy needs your help(分组背包)
- HDU 1712 ACboy needs your help(分组背包)
- HDU 1712 ACboy needs your help 分组背包裸题
- HDU 1712 ACboy needs your help 【分组背包裸题】
- hdu 1712 ACboy needs your help 分组背包
- ACboy needs your help HDU - 1712 裸分组背包
- HDU 1712 ACboy needs your help 分组背包
- HDU--1712--ACboy needs your help--分组背包/DP
- HDU 1712 ACboy needs your help 分组背包模板
- HDU-1712-ACboy needs your help(分组背包)
- HDU 1712 ACboy needs your help(分组背包)
- HDU 1712 ACboy needs your help(分组背包)
- hdu 1712 ACboy needs your help(分组背包)
- ACboy needs your help (HDU_1712) 分组背包
- hdu 1712 ACboy needs your help 分组背包
- HDU 1712 ACboy needs your help (分组背包入门 1)
- hdu 1712 ACboy needs your help(分组背包)