data aa (drop=a1-a5 w);
a1=int(1650/303);
a2=int(1650/251);
a3=int(1650/202);
a4=int(1650/151);
a5=int(1650/107);
w=1650-30; /*每根允许浪费30mm*/
do c=0 to a1;
do d=0 to a2;
do e=0 to a3;
do f=0 to a4;
do g=0 to a5;
x=303*c+251*d+202*e+151*f+107*g;
y=1650-x;
if x>w and x<=1650 then
output;
end;
end;
end;
end;
end;
run;
proc sort data=aa out=aa1;
by y ;
run;
data aa (keep=c d e f g i);
a1=int(1650/303);
a2=int(1650/251);
a3=int(1650/202);
a4=int(1650/151);
a5=int(1650/107);
w=1650-107;
do c=0 to a1;
do d=0 to a2;
do e=0 to a3;
do f=0 to a4;
do g=0 to a5;
x=303*c+251*d+202*e+151*f+107*g;
y=1650-x;
i+1;
if x>w and x<=1650 then
output;
end;
end;
end;
end;
end;
run;
proc sort data=aa out=aa(drop=i);
by descending i ;
run;
proc transpose data=aa out=aa1;
run;
data bb(drop=i);
do i =1 to 334;
a=1;
b=100;
c+1;
output;
end;
run;
proc transpose data=bb out=bb1;
run;
data ex1(keep=col1-col334);
set aa1 bb1;
run;
data ex;
input _type_$ _rhs_;
cards;
ge 10
ge 10
ge 10
ge 10
ge 10
min .
upperbd .
integer .
;
run;
data ex2;
merge ex1 ex ;
run;
proc lp data=ex2;
run;
data ex;
do a1=1 to int(1650/303);
x1+1; x2=0; x3=0; x4=0; x5=0;
do a2=1 to int(1650/251);
x2+1; x3=0; x4=0; x5=0;
do a3=1 to int(1650/202);
x3+1; x4=0; x5=0;
do a4=1 to int(1650/151);
x4+1; x5=0;
do a5=1 to int(1650/107);
x5+1;
y=1650-(303*(x1-1)+251*(x2-1)+202*(x3-1)+151*(x4-1)+107*(x5-1));
if y>=0 then do ;
r1=x1-1;
r2=x2-1;
r3=x3-1;
r4=x4-1;
r5=x5-1;
output;
end;
end;
end;
end;
end;
end;
run;
proc sort data=ex out=ex2(keep=r1-r5 y);
by desending y;
run;
proc print;
run;
/* second stage */
/*try one by one */
data aa (keep=c d e f g i );
a1=int(1650/303);
a2=int(1650/251);
a3=int(1650/202);
a4=int(1650/151);
a5=int(1650/107);
w=1650-107;
do c=0 to a1;
do d=0 to a2;
do e=0 to a3;
do f=0 to a4;
do g=0 to a5;
x=303*c+251*d+202*e+151*f+107*g;
y=1650-x;
if x>w and x<=1650 then do;
i+1;
output;
end;
end;
end;
end;
end;
end;
run;
proc print;
run;
proc sort data=aa out=aa(drop=i);
by descending i ;
run;
data collect(drop=i);
LENGTH _VAR_ $8.;
set aa;
i+1;
_VAR_=catt('COL',i);
run;
proc print;
run;
proc transpose data=aa out=aa1;
run;
proc print;
run;
data bb(drop=i);
do i=1;
a=1;
b=100;
c=1;
output;
end;
do i =2 to 334;
a=1;
b=200;
c+1;
output;
end;
run;
proc print;
run;
proc transpose data=bb out=bb1;
run;