Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.21 KB | None | 0 0
  1. function search(n:integer):boolean;
  2. var
  3. k,min,max:integer;
  4. begin
  5. For k:=n to length(a)-1 do
  6. begin
  7. summ:=summ+a[k];
  8. temp1:=temp1+inttostr(a[k])+',';
  9. score:=score+1;
  10. If (score>len) and (summ>=0) then
  11. begin
  12. While summ>=a2[i-1] do
  13. begin
  14. setlength(a2,length(a2)+1);
  15. a2[i]:=2*a2[i-1]+a2[i-2];
  16. i:=i+1;
  17. end;
  18. flag:=false;
  19. Min:=0;
  20. max:=length(a2)-1;
  21. While (flag=false) and (min<max) do
  22. begin
  23. If summ>a2[min+((max-min) div 2)] then
  24. Min:=(min+((max-min) div 2))+1
  25. else
  26. If summ=a2[min+((max-min) div 2)] then
  27. begin
  28. sum:=summ;
  29. flag:=true;
  30. out:=temp1;
  31. len:=score;
  32. end
  33. else
  34. Max:=(min+((max-min) div 2))-1;
  35. end;
  36. end;
  37. If k<long then
  38. search(k+1);
  39. score:=score-1;
  40. summ:=summ-a[k];
  41. setlength(temp1,length(temp1)-(length(inttostr(a[k]))+1));
  42. end;
  43. Result:=true;
  44. end;
  45. //
  46. procedure TForm1.MenuItem10Click(Sender: TObject); //
  47. begin
  48. try
  49. setlength(a2,2);
  50. i:=2;
  51. temp1:='';
  52. len:=1;
  53. a2[0]:=1;
  54. a2[1]:=2;
  55. memo1.Lines.Clear;
  56. search(0);
  57. setlength(out,length(out)-1);
  58. If len>1 then
  59. begin
  60. memo1.lines.add(' ( '+out+') '+' из '+inttostr(len)+' элиментов дает сумму '+inttostr(sum)+' равную одному из элиментов последовательности :');
  61. out:='{';
  62. For i:=0 to length(A2)-1 do
  63. out:=out+inttostr(A2[i])+',';
  64. out[length(out)]:='}';
  65. memo1.Lines.Add(out);
  66. end
  67. else
  68. memo1.Lines.Add('Нет совподений');
  69. except
  70. showmessage('ERROR#bt18');
  71. end;
  72. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement