[Hỏi] Cho 1 mảng n phần tử, tìm phần tử nguyên dương nhỏ nhất ko chứa trong mảng đó

anhking1990

New Member
Joined
Sep 28, 2017
Messages
74
Reaction score
0
tôi nói qua về cách tính thôi nhé:



+ length = số lượng phần tử trong chuỗi



+ Vòng lặp for cho biến chạy từ 1 đến length

for(i=1,i<=length,i++)



+ Kiểm tra xem trong chuỗi có phần tử i hay không

Nếu không có i thì đó là đáp án.

Nếu có i thì next tới i tiếp theo

Nếu chạy đến i=length mà vẫn có i trong chuỗi thì thì đáp án là legnth+1
 

maskrey

New Member
Joined
Oct 1, 2017
Messages
752
Reaction score
0
Bài này nếu mảng chỉ có số dương thì dễ ợt.



Tìm min, max của mảng. Chuyển dạng từ array sang set. Chạy vòng lặp for i từ min + 1 đến max+1, mỗi lần thêm số i vào set gốc, tạo thành 1 set dummy. So sánh set dummy với set gốc, nếu khác nhau thì i là số bạn cần tìm, dừng vòng lặp lại.



Chỉ 1 vòng lặp, ko sort gì hết đúng yêu cầu của bạn đấy. Nhưng nếu mảng có cả số âm thì phải thêm 1 vòng nữa để tìm min max là số dương, và 1 số if để check (trường hợp cả mảng là số âm chả hạn).
 

ndh1ep

New Member
Joined
Sep 30, 2017
Messages
501
Reaction score
0
Chính xác là bài này chỉ cần 1 vòng for duyệt mảng đơn giản, ko cần thêm sắp xếp gây phức tạp thuật toán và nặng project lớn.
- Đầu tiên đặt tạm 1 biến để lưu giá trị nhỏ nhất. Ví dụ MinValue == 0.
- Vòng for sẽ chạy con trỏ trong mảng từ đầu đến đít. Nếu tại vị trí con trỏ giá trị của nó là số nguyên dương thì kiểm tra tiếp giá trị này có nhỏ hơn MinValue ko, nếu nhỏ hơn MinValue sẽ bằng giá trị này.
Sinh viên năm nhất thì chịu khó tự suy nghĩ đi sẽ tốt hơn. Chứ sau này ra trường khó kiếm việc lắm.
 

flyer107

New Member
Joined
Nov 25, 2017
Messages
196
Reaction score
0
**Doremon** said:
Mẹ nay e cũng định bảo nhưng mà nó bảo đây là bài cơ bản mà, lại thêm 1 đứa nữa nó cũng có cách giải như vậy nên e trùng ko dám bật :stick: mà 2 đứa kia lại dân cntt, e ngoại đạo nên ko chắc chắn lắm :pudency: lên bảo nó giải cũng ngại vê lù, 2-3 thằng, đứa nào cũng bảo nói vậy mà đéo hiểu à :sosad:

Sent from SKII using vozFApp
Ngoại đạo cũng sợ nhục à , sĩ diện thế :sogood::sogood::sogood:
 

ryajautb

New Member
Joined
Nov 21, 2017
Messages
52,706
Reaction score
35
Để xác định thuật toán giải thì bạn phải hiểu yêu cầu của bài toán.
B1. Xác định xem dãy số đã dc sắp xếp chưa.
Nếu chưa bạn phải sắp xếp. Sn = { s0, s1,.... Sn-1} với s0<s1<s2... <sn-1.
B2. Xác định xem dãy số có là các số liên tiếp k
Kiểm tra sn-1 =n không?
Nếu sn-1 =n thì số bé nhất là n 1.
Nếu sn-1>n, ta sử dụng vòng lặp for để ktra
For(i =0;i<n;i )
If(si> i 1)
Số cần tìm là si
Nếu sai tiếp tục vòng lặp.
 

nhaodzo

New Member
Joined
Sep 29, 2017
Messages
351
Reaction score
0
ndh1ep said:
Chính xác là bài này chỉ cần 1 vòng for duyệt mảng đơn giản, ko cần thêm sắp xếp gây phức tạp thuật toán và nặng project lớn.
- Đầu tiên đặt tạm 1 biến để lưu giá trị nhỏ nhất của mảng MinValue chẳng hạn. Đặt tạm MinValue bằng giá trị đầu tiên của mảng.
- Vòng for sẽ chạy con trỏ trong mảng từ đầu đến đít. Nếu tại vị trí con trỏ giá trị của nó là số nguyên dương thì kiểm tra tiếp giá trị này có nhỏ hơn MinValue ko, nếu nhỏ hơn MinValue sẽ bằng giá trị này.
Sinh viên năm nhất thì chịu khó tự suy nghĩ đi sẽ tốt hơn. Chứ sau này ra trường khó kiếm việc lắm.
Nghe anh tả tôi không hiểu anh làm cái gì và có hiểu đề bài không :look_down:
 

anhdet1989

New Member
Joined
Oct 1, 2017
Messages
800
Reaction score
0
ndh1ep said:
Chính xác là bài này chỉ cần 1 vòng for duyệt mảng đơn giản, ko cần thêm sắp xếp gây phức tạp thuật toán và nặng project lớn.
- Đầu tiên đặt tạm 1 biến để lưu giá trị nhỏ nhất của mảng MinValue chẳng hạn. Đặt tạm MinValue bằng giá trị đầu tiên của mảng.
- Vòng for sẽ chạy con trỏ trong mảng từ đầu đến đít. Nếu tại vị trí con trỏ giá trị của nó là số nguyên dương thì kiểm tra tiếp giá trị này có nhỏ hơn MinValue ko, nếu nhỏ hơn MinValue sẽ bằng giá trị này.
Sinh viên năm nhất thì chịu khó tự suy nghĩ đi sẽ tốt hơn. Chứ sau này ra trường khó kiếm việc lắm.
:sosad:

Linus Torvalds
Talk is cheap. Show me the code.
 

elonmusk12

New Member
Joined
Sep 29, 2017
Messages
180
Reaction score
0
em nghĩ là:
trong vòng for ngoài tìm số nhỏ nhất, tìm thêm số nhỏ nhì nữa, nếu gặp số nhỏ nhất và nhỏ nhì liên tiếp nhau thì gán số nhỏ nhất bằng nhỏ nhì.
kết quả : số nhỏ nhất +1.
Để mai em code thử xem đúng ko

Sent from bb 9000 using vozFApp
 

anhdet1989

New Member
Joined
Oct 1, 2017
Messages
800
Reaction score
0
trong này nhiều mã giả ghê chắc hồi xưa học đc dạy Pseudocode nhiều lắm :rofl:

chém thấy ghê quá :go:
 
Top