ai = 1表示所需物质中必须有第i种基本物质
= -1表示所需物质中必须不能有第i种基本物质
= 0无所谓
问题求解:当k个不同要求给出之后,给出一种方案,指出哪些物质被使用,哪些物质不被使用。
程序说明:数组 b[1],b[2]……b[n] 表示某种物质
a[1..k,1..n] 记录k个地区对物品的要求,其中:
a[i,j]=1 表示第i个地区对第j种物品是需要的
a[i,j]=0 表示第i个地区对第j种物品是无所谓的
a[i,j]= -1 表示第i个地区对第j种物品是不需要的
程序:
program gxp2; var i,j,k,n : integer ; p: boolean ; b: array[0..20] of 0..1 ; a: array[1..20,1..10] of integer ; begin readln(n,k); for i:=1 to k do begin for j:=1 to n do read(a[i,j]); readln; end; for i:=0 to n do b[i]:=0; p:=true; while 1 do begin j:=n; while b[j]=1 do j:=j-1; 2 for i:=j+1 to n do b[i]:=0; 3 for i:=1 to k do for j:=1 to n do if (a[i,j]=1) and (b[j]=0) or 4 then p:=true; end; if 5 then writeln('找不到!') else for i:=1 to n do if (b[i]=1) then writeln('物质',i,'需要') else writeln('物质',i,'不需要'); end.
