Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Delphi] Найти два одинаковых числа в массиве


Автор: ДЫМ 7.3.2008, 13:40
Помогите решить задачу.
Дан массив произвольного размера с числами в пределах от 1 до 1,000,000. В этом массиве все числа уникальные, кроме одного числа, которое повторяется два раза. Найти это число.

Автор: Alexeis 7.3.2008, 13:48
Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 

Автор: Rodman 7.3.2008, 13:59
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

const N = 200;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Math;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var i, j, k:Integer;
    a:array [1..N] of integer;
begin
  Randomize;
  for i:=1 to N do
    a[i]:=Random(100);
  for i:=1 to N do
  begin
    k:=0;
    for j:=1 to N do
      if(a[i]=a[j])then
      begin
        MessageDlg('Your number: '+IntToStr(a[i]), mtInformation, [mbOK], 0);
        Exit;
      end;
  end;
end;

end.

Автор: ДЫМ 7.3.2008, 16:10
А нужно ли во втором цикле перебирать вновь весь массив, может быть надо с текущей позиции до конца?

Автор: Rodman 7.3.2008, 16:12
Ну конешно будет быстрее! кто же тебе запрещает так сделать!

Автор: ЕвгенийЗюзиков 21.8.2008, 14:17
А какова сложность этого алгоритма? Если не O(N), то как решить эту же задачу, чтобы было O(N)?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)