Pascal程式筆跡 和為零

2021-08-11 16:50:49 字數 1468 閱讀 1922

>>

和為零

[題目介紹]

有n個數,分別是1,2..n,要你用加減或什麼都不幹,來使整個連起來的算式和為零。

[樣例輸入,輸出]

輸入1:5

輸出1:1 2-3-4-5

輸入2:6

輸出2:1 2+3-4-5-6

[題目資料]

16>n>0

搜尋快線直通答案,注意可以什麼都不幹。

2到n個符號全部搜一遍(for i:=1 to 3 do)分別是空,+,-,然後呼叫和回溯。

到n+1了判斷是否為0。(當然你在n最後的if的時候也可以判斷)

回溯太難演示了(前幾次我還有點耐心),還是看下圖吧。

1    |

(  )(+)(--)      |

2    |

(  )(+)(--)      |

3    \/

得出:1+2-3=0

《**實現》

varn,i:longint;

a,b:array[1..1000] of longint;

function sc:longint;

varb,c,i,k:longint;

begin

b:=1;

c:=0;

k:=2;

for i:=2 to n+1 do

begin

case a[i] of

1:b:=b*10+i;

2,3:begin

if k=2 then c:=c+b else c:=c-b;

k:=a[i];

b:=i;

end;

end;

end;

sc:=c;

end;

procedure dg(x:longint);

vari:longint;

begin

if x>n then

begin

if sc=0 then

begin

write(1);

for i:=2 to n do

begin

if a[i]=1 then

write(' ');

if a[i]=2 then

write('+');

if a[i]=3 then

write('-');

write(i);

end;

writeln;

end;

endelse

begin

for i:=1 to 3 do

begin

a[x]:=i;

dg(x+1);

a[x]:=0;

end;

end;

end;

begin

read(n);

a[n+1]:=2;

dg(2);

end.

問題 K 搜尋 和為零

題目描述 考慮乙個由1到n n 3,4,5,9 的數字組成的遞增數列 1 2 3 n。現在請在數列中插入 表示加,或 表示減,或 表示空白,將每一對數字組合在一起 不要在第乙個數字前插入符號 計算該表示式的結果並注意是否為零,請你寫乙個程式找出所有產生和為零的長度為n的數列。輸入整數n 3 n 9 ...

三個數和為零

給出乙個長度為n的無序陣列,陣列中的元素為整數,有正有負包括0,並互不相等。從中找出所有和 0的3個數的組合。如果沒有這樣的組合,輸出no solution。如果有多個,按照3個數中最小的數從小到大排序,如果最小的數相等則按照第二小的數排序。input 第1行,1個數n,n為陣列的長度 0 n 10...

LeetCode演算法 三數和為零 Python

給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。1 先排序,從小到大開始 2 最外層使用for迴圈,從0到 len nums 全部走一遍 3 每迴圈一次,i位置數 和 後面的數中查詢兩個數,使得三個數的...