Pascal細胞問題我的程式哪裡不對懂的進

時間 2022-07-01 21:35:14

1樓:

不像樓上說的那樣,

其實你只有一點錯了

陣列是從1..m,1..n的

因此p可以等於m,

q也可以等於n

所以把 第四行的 p

再試試還不對的話直接問我

2樓:

我現在的計算機裡沒有執行pascal的軟體,程式我看了演算法上應該沒有問題。但是有一點就是字串的操作。pascal的字串我不知道能不能這麼用,但是c可以,但c語言中的字元時從s[0]開始而不是從s[1]。

3樓:此名將註冊

a[p,q]:=0 當然不對了,會使一些完整的細胞斷開,所以細胞數自然多了

我建議再定義一個二維的boolean型陣列,來記錄某個座標是否查詢過

還有一般來說不用再 四個if語句中判斷是否溢位邊界,只要把陣列的下標上標

多定義一位因為初始化為0,所以不是細胞。這一來還減少了工作量

以下是我做的程式,用以參考,思路基本和你一樣:

vari,j,k,n,m:integer;

s:string;

a:array[0..51,0..81] of integer;

b:array[0..51,0..81] of boolean;

procedure search(x,y:integer);

varp,q:integer;

begin

p:=x;q:=y;

if (a[p,q+1]>0) and(b[p,q+1]) then

begin b[p,q+1]:=false;search(p,q+1);end;

if (a[p,q-1]>0) and(b[p,q-1]) then

begin b[p,q-1]:=false;search(p,q-1);end;

if (a[p-1,q]>0) and(b[p-1,q]) then

begin b[p-1,q]:=false;search(p-1,q);end;

if (a[p+1,q]>0) and(b[p+1,q]) then

begin b[p+1,q]:=false;search(p+1,q);end;

end;

begin

readln(m,n);

for i:=1 to m do

begin

readln(s);

for j:=1 to n do

a[i,j]:=ord(s[j])-ord('0');

end;

k:=0;

fillchar(b,sizeof(b),true);

for i:=1 to m do

for j:=1 to n do

if b[i,j] and (a[i,j]>0) then

begin

search(i,j);

inc(k);

end;

writeln(k);

end.

pascal程式問題,Pascal程式問題

5.var a array 1.32767 of boolean b array 1.40 of integer i,s,t integer begin for i 1 to 32767 do a i false write 1 8,2 8 a 1 true b 1 1 b 2 2 s 2 repe...

細胞程式性死亡的機制有哪些,細胞程式性死亡和細胞凋亡的區別

細胞衰老和細胞凋亡,這兩個都是受基因控制的。細胞程式性死亡和細胞凋亡的區別 淵源 kerr bai 1972 最先提出凋亡的概念,與細胞 du壞死的區別是 zhi 細胞通過出芽的方式形dao成許多凋亡小體 凋亡小體內有結構完整的細胞器 不引起炎症 線粒體無變化,溶酶體活性不增加 內切酶活化,dna有...

pascal語言中while語句的問題

不一定要有。例如 while n 20 do inc n 因為while之後只有一個語句 inc n 所以不用begin end 如果有多個語句,例如 while n 20 do begin inc n dec n end 這樣就要有begin end 了。記住這個,如果while後只有一個語句,那...