>>
和為零
[題目介紹]
有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位置數 和 後面的數中查詢兩個數,使得三個數的...