真龍虎王 发表于 2010-3-3 16:17:12

急求帮改程序将矩阵原本的常数改为3*3矩阵元素(P只看第一個,P有誤已更正)

本帖最后由 真龍虎王 于 2010-3-4 09:08 编辑

原本题目:                                     新增
   NO            GO          TO            P
    1               0             1             7
    2               1             2             7
    3               1             4             1
    4               2             3             6
原程序:
NO=;
GO=;
TO=;
k=zeros(length(NO),length(NO));
a=sub2ind(size(k),NO,TO);
k(a)=-1;
for i=1:length(NO)
    s=i;
    while s>=2
      s=find(TO==GO(s));
      k(NO(s),(TO(i)))=-1;
    end
end
答:
K=                TO    =             1    2   3    4         =[-1 -1 -1 -1;0 -1 -1 0;0 0 0 -1;0 0 -1 0]
            NO[   ]         1   [-1   -1    -1   -1
                                 2       0   -1    -1    0
                                 3       0    0   0   -1
                                 4       0    0    -1    0 ]
现在想改多看一个矩阵P    矩阵大小跟NO相同
如 P=
题目想改为
看NO找TO值再看GO值时顺便看P值
原本K是放入-1想改为当:

PS:只看NO找TO时找到的第一个P值如果GO不是0那下一个的P不使用
只用第一次找到的P

P=7    -1改为放入[-1 0 0;0 -1 0;0 0 -1]
=6    -1改为放入[-1 0 0;0 0 0;0 0 -1]
=5    -1改为放入
=4    -1改为放入[-1 0 0;0 -1 0;0 0 0]
=3    -1改为放入
=2    -1改为放入
=1    -1改为放入[-1 0 0;0 0 0;0 0 0]

那原本的矩阵的零元素改為零3*3矩阵=
目前卡关是卡在k矩阵大小是会因为P而变以及-1要改放入矩阵
答案会是
-1   0   0    -1   0   0   -1   0   0   -1   0    0
0-1   0   0-1   0      0   0   0      0   0    0
0   0-1   0   0-1      0   0-1      0   0    0

0   0   0    -1   0   0   -1   0   0      0   0    0
0   0   0   0-1   0      0   0   0      0   0    0
0   0   0   0   0-1      0   0-1      0   0    0

0   0   0   0   0   0      0   0   0      -1   0    0
0   0   0   0   0   0      0   0   0      0   0    0
0   0   0   0   0   0      0   0   0      0   0    0

0   0   0   0   0   0      -1   0   0      0   0    0
0   0   0   0   0   0      0   0   0      0   0    0
0   0   0   0   0   0      0   0-1      0   0    0
页: [1]
查看完整版本: 急求帮改程序将矩阵原本的常数改为3*3矩阵元素(P只看第一個,P有誤已更正)

招聘斑竹