演算法:搜尋
其實還算是一道比較簡單的bfs,由於長時間不寫了,手有點生……
一看有明顯的0和1的區別,果斷採用位運算。
1.先假設都患病,並設狀態都為1,那麼初始狀態也就是n個1。目標狀態因此很明確就是全為0。
2.因為可以重複選,所以每次從1~m裡選乙個然後再每一項都改變,這裡就採用了位運算的技巧。
program vj1026;
const
maxn=10;
maxm=100;
maxt=10000;
type
atp=record
zt,dep:longint;
end;
var head,tail,n,m:longint;
a:array [0..maxm,0..maxn] of longint;
b:array [0..maxt] of boolean;
que:array [0..maxt] of atp;
procedure init;
var i,j:longint;
begin
readln(n);
readln(m);
for i:=1 to m do
begin
for j:=0 to n-1 do read(a[i,j]);
readln;
end;
end;
procedure main;
var i,j,t:longint;
begin
t:=0;
fillchar(b,sizeof(b),false);
for i:=1 to n do t:=(t shl 1)+1;
head:=0;
tail:=1;
que[1].zt:=t;
que[1].dep:=0;
b[t]:=true;
while head
Hash P1026毒藥?解藥?
1 include 2 include 3 include 4 include 5 using namespace std 6int n,m,map 101 11 dist 1025 11 hash 1025 st 11 7 void read int x 12int hash int a retu...
小老鼠 毒藥
我們有很多瓶無色的液體,其中有一瓶是毒藥,其它都是蒸餾水,實驗的小白鼠喝了以後會在5分鐘後死亡,而喝到蒸餾水的小白鼠則一切正常。現在有5只小白鼠,請問一下,我們用這五隻小白鼠,5分鐘的時間,能夠檢測多少瓶液體的成分 c a 5瓶 b 6瓶 c 31瓶 d 32瓶 分析 考察的是二進位制的問題。5個小...
誰能找出毒藥?
今天,和乙個朋友談論了乙個有趣的問題 有1000個一模一樣的瓶子,其中有999瓶是普通的水,有一瓶是毒藥。任何喝下毒藥的生物都會在一星期之後死亡。現在,你只有10只小白鼠和一星期的時間,如何檢驗出哪個瓶子裡有毒藥?眨看之下,貌似 有一堆砝碼,有乙個不准,最少幾次稱量可以找出這個砝碼?但這問題關鍵是 ...