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 2n 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
Bài liên quan
Mình chưa hiểu đề bài lắm.
Bạn có thể nói rõ đề bài nói gì không, mình chưa hiểu đề lắm
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 …