x=[9,8,7,6,5,4,3,2,1];
array_all = bsxfun( @times, x(:), [1 .5 .25] );
n = numel(x);
valid = false(n,1); %// at first, only first line is valid
valid(1) = true;
for ii=2:n, %// first line is valid by default
    valid(ii) = ~any( reshape( array_all( valid, : ),[],1) == x(ii) );
end
array_all = array_all(valid, : )