Problema de mochila C++

#include

int?n,W[1000],T,b[1000];

void?f(int? t,int?sum)

{ int?i; si(t>n+1) regresa; si(suma>T) regresa; 1;i

if(b[i]==1)

printf("W%d=%d?",i,W[i ]); } printf("\n"); retorno } f(t+1,suma+W[t]); );

}

int?main()

{ int?P[1000],a[100000][2],i,j; (scanf("%d%d",&n,&T)!=EOF){ /*Datos de entrada*/ for(i=1;i<=n;i++)

scanf("%d %d",&W[i],&P[i]); for(i=0;i<=T;i++)

a[i][0]=a[i][1] =0;

/************************************/ f( 1,0);//Llamar a la función para resolver el problema 1/*Algoritmo de mochila 0-1*/ for(i=1;i<=n;i++){

for(j=0;j

a[j][i%2]=a[j][(i+1)%2];

for(;j<=T;j++)

if(a[j-W[i]][(i+1)%2]+P[i]>a[j][(i+1 )%2]) a[j][i%2]=a[j-W[i]][(i+1)%2]+P[i];

si no a[j][ i%2]=a[j][(i+1)%2]; } printf("max=%d.\n\n",a[T][n%2]);

/************************************/ } return?0;

}

El formato de entrada es:

n?T

W1?P1

W2?P2

.?.

.?.

.?.

Wn?Pn

Salida del resultado:

¿Semana1?Semana2...

Semana1?Semana2...

max=valor precio total máximo.

Ejemplo:

Entrada :

5?10

1?1

2?2

3?3

4? 4

5?5

Salida:

W1=1?W2=2?W3=3?W4=4

W1 =1?W4=4?W5=5

W2=2?W3=3?W5=5

max=10.