问题描述:三个矩阵 A(1*n) B(n*m) C(1*m) 矩阵只由01组成 令a*b=c 现在知道c问 有多少种不同的a,b使条件成立
c11= c12= ......... c1m=
a11*b11 a11*b12 a11*b1m
+ + +
a1i*bi1 a1i*bi2 a1i*bim
C的第i列只与B的第i列有关
假设n=3
a矩阵的情况有 假设c11=1
0 0 0
0 0 1 对于001 对应 b11 只能是1 b21 b31 这两位任填 有2^2=4种情况
0 1 0 a矩阵上的0*b矩阵的对应位置上的数 依然为0 对c11的取值没影响 所以可以任选 对于0有2^(n-i) 种情况 i为1的个数
0 1 1 对于011 对应 b31 任填 b21 b31 这两位填1的个数只能是奇数 对于一个01串 1的个数出现奇数次 等于这个01串全部情况的一半 2*2^2/2=4
1 0 0 对于1有2^i/2种情况
1 0 1
1 1 0
1 1 1
所以当a矩阵有i个1的时候 b矩阵的取值情况有 2^(n-i)*2^i/2=2^(n-1)
当c11=0时 同理0任选 1只能为偶数个也是01串的一半 式子也是 2^(n-1)
对于a 有2^n-1种情况 排除全0
有(2^n-1)*(2^(n-1))
因为b矩阵有m列
(2^n-1)*(2^(n-1))*...*(2^(n-1)) 共m个(2^(n-1))
=(2^n-1)*(2^(nm-m))
当c矩阵全0时
要加上a矩阵全0的情况 共2^(m*n)