标签:style blog http io ar color os sp for
CD |
You have a long drive by car ahead. You have a tape recorder, but unfortunately your best music is on CDs. You need to have it on tapes so the problem to solve is: you have a tape N minutes long. How to choose tracks from CD to get most out of tape space and have as short unused space as possible.
Assumptions:
Program should find the set of tracks which fills the tape best and print it in the same sequence as the tracks are stored on the CD
5 3 1 3 4 10 4 9 8 4 2 20 4 10 5 7 4 90 8 10 23 1 2 3 4 5 7 45 8 4 10 44 43 12 9 8 2
1 4 sum:5 8 2 sum:10 10 5 4 sum:19 10 23 1 2 3 4 5 7 sum:55 4 10 12 9 8 2 sum:45
#include<stdio.h> #include<string.h> int main() { int dp[10000],time[10000],sum,cd[25]; int N,m,t; while(scanf("%d%d",&N,&m)>0) { memset(dp,0,sizeof(dp)); dp[0]=1; while(m--) { scanf("%d",&t); for(int v = N; v>=t; v--) if(dp[v-t]&&dp[v]==0) dp[v]=dp[v-t]+1,time[v]=t; } for(sum=N;sum>0;sum--) if(dp[sum]) break; int i=0; for(int j=sum;j>0;j=j-time[j]) cd[++i]=time[j]; for( ;i>0;i--) printf("%d ",cd[i]); printf("sum:%d\n",sum); } }
标签:style blog http io ar color os sp for
原文地址:http://blog.csdn.net/u010372095/article/details/41653125