首页 > 试题广场 >

问题描述:有n种基本物质(n≤10),分别记为P1,P2,…

[填空题]
问题描述:有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 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.

这道题你会答吗?花几分钟告诉大家答案吧!