9。11水晶宫问题
昨天,有位同志提了,9.11事件的水晶宫问题。刚才搜了一下,没有找到这位同志,但我把程序写在这儿,我用的是MATLAB,主要是考虑到速度问题。 function search()
stock=[stock1 stock2 stock3 ... stock100] %每个水晶块的重要
sum=0;
n=input('en:');
flag=1;
for i=1:100
bit[i]=0;
sum=sum+stock(i);
end
for num=1:2^n-2 %不要怕,考虑到对称,补码,可以大大减少的
bit=stockbit(num);
flag=1;
for numbit=1:100
if bit(numbit)==1
sum1=sum1+stock(numbit);
key(flag)=numbit;
flag=flag+1;
end
end
if sum1*2=sum &成功以后就输出,并退出
disp('success');
key
sum1
break;
end
end
function [bit]=stockbit(num) %计算二进制的形式
n=num;
flag=1;
for i=1:100
bit(i)=0;
end
while n~=0
r=mod(n,2);
bit(flag)=r;
flag=flag+1;
n=(n-r)/2;
end