01/10/2018, 08:22

Tìm cặp số còn lại khác nhau

bờm là chủ hàng giày. hôm nọ check kho có 2n chiếc giày.
n chiếc phải có k.thước a1,a2,…,an
n chiếc trái có b1, b2,…,bn
biết hai chiếc thành một cặp khi ai = bj;
tìm bao nhiêu chiếc giày cần đổi (không bằng) để bán hết 2
n giày
ta có hai dãy số là số đo của n cặp giầy , cụ thể :
n : 3
a(chiếc bên phải) :1 3 1
b(chiếc bên trái) : 3 2 1

em code pascal trong tn ý , trong code thì biến dem đếm số giầy giống nhau

program doi_giay;
  uses crt;
  var i,n,dem : integer;
      a,b,c : array[1..100] of integer;
      f :text;
  procedure output();
    begin
         assign(f,'shoes.out');
         rewrite(f);
         writeln(f,dem);
         close(f);
    end;
  procedure check();
   var j,k : integer;
    begin
         k:=0;
         for i:=1 to n do begin
             for j:=1 to n do
                 if (a[i] = b[j]) then begin
                    c[i] := i;
                    c[i+1] := j;
                    end;
         end;
         output();
    end;
  procedure input();
    begin
         assign(f,'shoes.inp');
         reset(f);
         readln(f,n);
         for i:=1 to n do read(f,a[i]);
         for i:=1 to n do read(f,b[i]);
         close(f);
         check();
    end;
  begin
       // Chuong trinh chinh :V
       input();
  end.

ai có ý tưởng thuật toán gì hay hay chia sẽ xem

Người bí ẩn viết 10:24 ngày 01/10/2018

Mình chưa hiểu đề bài lắm.

Kiet_le viết 10:24 ngày 01/10/2018

Bạn có thể nói rõ đề bài nói gì không, mình chưa hiểu đề lắm

*grab popcorn* viết 10:22 ngày 01/10/2018

trong code thì biến dem đếm số giầy giống nhau

Vì cặp 2 số 1 ở vị trí 1 và 3 đã đếm rồi nhưng khi i = 3 thì nó lại tính j = 3 (cũng là 1-1) này thành 1 cặp nữa.

Còn giải thuật thì mình nghĩ ntn

Khi gặp cặp a[i] và b[j] giống nhau thì cho a[i] = b[j] = -1 và break vòng lập j -> Khi duyệt hết thì các số ko có cặp trùng là >0
Duyệt 2 vòng for như vậy nữa, in ra cặp a[i] b[j] đầu tiên mà cả 2 đều > 0 rồi gán cho a[i] = b[j] = -1 rồi tiếp tục tìm tiếp …

Bài liên quan
0