cw=c;
printf(\
printf(\±³°üËù×°ÎïÆ·£º\\n\
printf(\
for(sp=0,sw=0,i=1;i<=n?1;i++) // ÒÔ±í¸ñÐÎʽÊä³ö½á¹û if(m[i][cw]>m[i+1][cw])
{cw?=w[i];sw+=w[i];sp+=p[i];
printf(\ }
if(m[1][c]?sp==p[n]) {sw+=w[i];sp+=p[i];
printf(\ }
printf(\}
4£®¶¯Ì¬¹æ»®Ë³ÍÆÇó½â £¨1£©Ëã·¨Éè¼Æ
Ä¿±êº¯Êý¡¢Ô¼ÊøÌõ¼þÓë·Ö½×¶ÎͬÉÏ¡£ 1) ½¨Á¢µÝÍÆ¹ØÏµ
Éèg(i,j)Ϊ±³°üÈÝÁ¿j£¬¿ÉÈ¡ÎïÆ··¶Î§Îª£º1,2,?,iµÄ×î´óÐ§ÒæÖµ¡£Ôò µ±0¡Üj ²»×°ÈëÎïÆ·i£¬Õâʱ×î´óÐ§ÒæÖµÎªg(i?1,j)£» ×°ÈëÎïÆ·i£¬ÕâʱÒѲúÉúÐ§Òæp(i)£¬±³°üÊ£ÓàÈÝ»ýj?w(i)¿ÉÒÔÑ¡ÔñÎïÆ·1,2,?,i?1À´×°£¬×î´óÐ§ÒæÖµÎªg(i?1,j?w(i))+p(i)¡£ÆÚÍûµÄ×î´óÐ§ÒæÖµÊÇÁ½ÕßÖеÄ×î´óÕß¡£ ÓÚÊÇÓеÝÍÆ¹ØÏµ 0¡Üj£¼w(i)?g(i?1,j)g(i,j)???max(g(i?1,j),g(i?1,j?w(i))?p(i))j¡Ýw(i) ÆäÖÐw(i),p(i)¾ùΪÕýÕûÊý£¬x(i)¡Ê{0,1}, i=1,2,?,n¡£ ±ß½çÌõ¼þΪ£º g(1, j)=p(1), µ±j¡Ýw(1)£» g(1, j)=0, µ±j for(j=0;j<=c;j++) if(j>=w[1] ) g[1][j]=p[1]; // Ê×ÏȼÆËãg(1,j) else g[1][j]=0; for(i=2;i<=n;i++) // Ë³ÍÆ¼ÆËãg(i,j) for(j=0;j<=c;j++) if(j>=w[i] && g[i?1][j] Èôg(i,cw)>g(i?1,cw), i=n,n?1,?,2 Ôòx(i)=1£»×°ÔØw(i)¡£ÆäÖÐcw=c¿ªÊ¼£¬cw=cw?x(i)*w(i). ·ñÔò£¬x(i)=0£¬²»×°ÔØw(i)¡£ ×îºó£¬Ëù×°ÔØµÄÎïÆ·Ð§ÒæÖ®ºÍÓë×îÓÅÖµ±È½Ï£¬¾ö¶¨w(1)ÊÇ·ñ×°ÔØ¡£ £¨2£©0/1±³°üÎÊÌâC³ÌÐòÉè¼Æ // Ë³ÍÆ0/1±³°üÎÊÌâ #include {int p[N],w[N],g[N][5*N]; int i,j,c,cw,n,sw,sp; printf(\// ÊäÈëÒÑÖªÌõ¼þ printf(\ for(i=1;i<=n;i++) {printf(\ scanf(\ } for(j=0;j<=c;j++) if(j>=w[1] ) g[1][j]=p[1]; // Ê×ÏȼÆËãg(1,j) else g[1][j]=0; for(i=2;i<=n;i++) // Ë³ÍÆ¼ÆËãg(i,j) for(j=0;j<=c;j++) if(j>=w[i] && g[i?1][j] g[i][j]=g[i?1][j]; cw=c; printf(\ printf(\±³°üËù×°ÎïÆ·£º \\n\// ¹¹Ôì×îÓŽâ printf(\ for(sp=0,sw=0,i=n;i>=2;i??) // ÒÔ±í¸ñÐÎʽÊä³ö×îÓŽâ if(g[i][cw]>g[i?1][cw]) {cw?=w[i];sw+=w[i];sp+=p[i]; printf(\ } if(g[n][c]?sp==p[1]) {sw+=w[i];sp+=p[i]; printf(\ } printf(\} ÔËÐгÌÐò£¬ÊäÈëÔʼÊý¾Ýºó£¬µÃ£º input n:6 input c:60 input w1,p1:15,32 input w2,p2:17,37 input w3,p3:20,46 input w4,p4:12,26 input w5,p5:9,21 input w6,p6:14,30 c=60 ±³°üËù×°ÎïÆ·£º i w(i) p(i) 2 17 37 3 20 46 5 9 21 6 14 30 w=60, pmax=134 ¼´×°µÚ2¡¢3¡¢5¡¢6Ëļþ£¬×°°üÖØÁ¿Îª60£¬»ñÈ¡×î´óÐ§Òæ134¡£ 5£®Ëã·¨¸´ÔÓ¶È·ÖÎö ÒÔÉ϶¯Ì¬¹æ»®Ëã·¨µÄʱ¼ä¸´ÔÓ¶ÈΪO(nc)£¬¿Õ¼ä¸´ÔÓ¶ÈҲΪO(nc)¡£Í¨³£c>n£¬Òò¶øËã·¨ 2 µÄʱ¼ä¸´ÔÓ¶ÈÓë¿Õ¼ä¸´ÔӶȾù¸ßÓÚO(n)¡£ 6.5.2 ¶þά0?1±³°üÎÊÌâ 1. °¸ÀýÌá³ö ÒÑÖªnÖÖÎïÆ·ºÍÒ»¸ö¿ÉÈÝÄÉcÖØÁ¿¡¢dÈÝ»ýµÄ±³°ü£¬ÎïÆ·iµÄÖØÁ¿Îªwi£¬ÈÝ»ý Ϊvi£¬²úÉúµÄÐ§ÒæÎªpi¡£ÔÚ×°°üʱÎïÆ·i¿ÉÒÔ×°È룬Ҳ¿ÉÒÔ²»×°£¬µ«²»¿É²ð¿ª×°£¬ÎïÆ·i¿É ²úÉúµÄÐ§ÒæÎªxipi£¬ÕâÀïxi?{0,1},c,wi,pi?N?¡£ÎÊÈçºÎ×°°ü£¬Ê¹ËùµÃÐ§Òæ×î´ó¡£ ÔÚÉϰ¸Àý»ù´¡ÉÏÔö¼ÓÈÝ»ýµÄÔ¼ÊøÌõ¼þ¼´Îª¶þά0?1±³°üÎÊÌâ¡£ ÏÂÃæÓ¦ÓÃÇî¾ÙÓ붯̬¹æ»®Á½ÖÖËã·¨Éè¼ÆÇó½â¡£ 2£®¸ø¶¨ÎïÆ·ÖÖÊýʱÇî¾ÙÉè¼Æ £¨1£©Ëã·¨Éè¼Æ µ±¸ø¶¨ÎïÆ·ÖÖÊýʱ£¬ÀýÈç¶Ô8ÖÖÎïÆ·£¬Ã¿Ò»ÖÖÎïÆ·µÄÖØÁ¿w(k)¡¢ÈÝ»ýv(k)ÓëÐ§Òæp(k)(1¡Ük¡Ü8)¿ÉÈÎÒâ´Ó¼üÅÌÊäÈ룬ӦÓÃÇî¾ÙÉè¼Æ£¬¿ÉÉè¼Æ8ÖØÑ»·£ºµÚÒ»ÖÖÎïÆ·µÄÑ»·±äÁ¿Îªx(1)£¬ÆäȡֵΪ0»ò1£»µÚ2ÖÖÎïÆ·µÄÑ»·±äÁ¿Îªx(2)£¬ÆäȡֵҲΪ0»ò1£»??¡£Òò¶øÇî¾Ù¿ÉÓÉÑ»·½á¹¹ for(x[1]=0;x[1]<=1;x[1]++) for(x[2]=0;x[2]<=1;x[2]++) ?? for(x[8]=0;x[8]<=1;x[8]++) À´ÊµÏÖ¡£¶Ôÿһ×éx(k)(1¡Ük¡Ü8)£¬¼ÆËãÖØÁ¿Ö®ºÍsw£¬ÈÝ»ýÖ®ºÍsvÓëÐ§ÒæÖ®ºÍsp£¬µ±sw¡ÜcÇÒsv¡Üdʱͨ¹ýspÓëpmax±È½ÏÇóÈ¡Ð§ÒæµÄ×î´óÖµpmax¡£ n ÒÔÉÏÇî¾ÙÉè¼ÆµÄʱ¼ä¸´ÔÓ¶ÈΪO(2)£¬¿Õ¼ä¸´ÔÓ¶ÈΪO(n)¡£ £¨2£©¸ø¶¨ÎïÆ·ÖÖÊýʱµÄÇî¾Ù³ÌÐòʵÏÖ // ¶þά0/1±³°üÎÊÌâÇî¾ÙÇó½â #define N 9 void main() {int p[N],w[N],v[N],x[N],y[N]; int i,k,c,d,cw,cv,sw,sv,sp,pmax; printf(\ÊäÈëÒÑÖªÌõ¼þ printf(\ for(k=1;k<=8;k++) {printf(\ scanf(\ } pmax=0; for(x[1]=0;x[1]<=1;x[1]++) for(x[2]=0;x[2]<=1;x[2]++) for(x[3]=0;x[3]<=1;x[3]++) for(x[4]=0;x[4]<=1;x[4]++) for(x[5]=0;x[5]<=1;x[5]++) for(x[6]=0;x[6]<=1;x[6]++) for(x[7]=0;x[7]<=1;x[7]++) for(x[8]=0;x[8]<=1;x[8]++) {for(sw=0,sv=0,sp=0,k=1;k<=8;k++) {sw=sw+x[k]*w[k]; // ÇóÎïÆ·ÖØÁ¿Ö®ºÍ sv=sv+x[k]*v[k]; // ÇóÎïÆ·ÈÝ»ýÖ®ºÍ sp=sp+x[k]*p[k]; // ÇóÎïÆ·Ð§ÒæÖ®ºÍ

