不是VIP会员,不能显示答案

题目解答

题目:
问题描述:有n种基本物质(n≤10),分别记为P1,P2,……,Pn,用n种基本物质构造物质,这些物品使用在k个不同地区(k≤20),每个地区对物品提出自己的要求,这些要求用一个n位的数表示:a1a2……a n,其中:
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  P AND (B[0]=0)  do
    begin
      j:=n;
      while b[j]=1 do j:=j-1;
       B[J]:=1 ;
      for i:=j+1 to n do b[i]:=0;
       P:=FALSE ;
      for i:=1 to k do
        for j:=1 to n do
          if (a[i,j]=1) and (b[j]=0) or (A[I,J]=-1) AND (B[J]=1) ;
            then p:=true;
    end;
  if  P 
    then writeln(‘找不到!’)
    else for i:=1 to n do
          if (b[i]=1) then writeln(‘物质’,i,’需要’)
                   else writeln(‘物质’,i,’不需要’);
end.
考点:
分析:
解答:
评论:
老师: