[Thực chiến] Tìm hình có diện tích lớn nhất

1 K là nhiều rồi đó. Nhỡ 1 cái 50000 , 1 cái 50010 mà lệch 1 K là toi.

Code thử phát xem nó ra bao nhiêu chứ chưa có đáp số :joy::joy:

1 Like

hình 2 có diện tích 279x185 = 51615 đúng rồi đóa. Cái hình tròn kia đo thấy là hình elip, 1 đường kính 263, 1 đường kính 256, vậy diện tích là pi128131.5 = 52879, 52823.5 gần đúng rồi, thư diện Boost mà lị :joy:

code loang từng pixel lấy diện tích là đồ con nít, ko thèm xài :flushed:

1 Like

Bất chấp thủ đoạn cơ mà :rofl:
Người lớn mà sai vẫn không được chấp nhận :rofl::rofl:
Thằng boost thì chưa biết nó xử lý kiểu gì. Cũng loang thì :flushed:

1 Like

Rảnh quá ngồi code :joy:
System.Drawing.Bitmap rồi ngồi đếm px. Đậu moẹ gõ nhầm hexagon thành triangle :expressionless:

Position đây là góc trên bên trái của hình chữ nhật bao quanh shape đó.

1 Like

Sau khi đọc kỹ đề thì lại ngồi sửa code :joy: Đáp án:

1 Like

rectangle ra 52074 sai rầu, bật Paint lên đo thấy kích thước là 279x185 mà

trong cái hình kia cũng thấy: xmin = 325 xmax = 604 => dài 279, 204-19 = 185 rộng

1 Like

Chưa biết đúng sai nhưng mà cắt thành 6 hình thì “thủ đoạn” cao tay quá :rofl:
Mà rectangle sai rồi kìa

1 Like

đã update kết quả sau khi download lại ảnh

1 Like

Ô la la, hoá ra lỗi là ở dòng if (BitmapedImage.GetPixel(i, j).R == 0) thành ra những cái gì không đen tuyệt đối là nó không nhận :joy: Sửa thành if (BitmapedImage.GetPixel(i, j).R < 128) cái là ra giống người khác ngay…

1 Like

Cũng giống anh em !
Nhưng mà cơ vẫn 1 múi :smile:

1 Like

đao lòng vậy, cái hcn là 279+1 x 185+1 pixels à :sleepy:

cái Boost kia nó tính theo tọa độ nên bị mất 1 pixel

----------- 0
[-] [-] [-]  
----------- 1
[|]     [|]      => chiều cao = 2 (trong khi cái hình là 3 pixels)
----------- 2
[-] [-] [-]  
1 Like

Sao hồi nẫy bảo boost người lớn, loang con nít :smile:

1 Like

cái Boost Geometry này là cho tính toán hình học, đem áp dụng vô cái pixel map này ko hợp lý lắm, vọc thử cái cho biết :stuck_out_tongue: Cái loang kia DFS/BFS chán phèo có gì hay đâu

1 Like

Trước khi có thuật toán xịn thì phải có thuật toán đúng đã chứ :joy:
Tại vì mấy cái hình phức tạp mà không có công thức, kiểu như hình đám mây suy nghĩ chẳng hạn, thì ngoài đếm ra còn cách nào đâu, nếu vi phân nó thành các hình chữ nhật thì kết quả cũng chỉ gần đúng.

1 Like

Thì chủ yếu cho cái đám mây vào để thịt mấy cái thư viện có sẵn mà. :smile:
Chứ thực ra ý tưởng bao dầu nó là thế này cơ :smile:

1 Like

Chơi GetPixel lâu lắm :stuck_out_tongue:

1 Like

Thế thì dùng cái gì hả anh?
Em thì là mở streamwriter, mở 6 file, quét 6 bitmap, đóng stream, mất xấp xỉ 3 giây rưỡi :smile:

1 Like

Tìm từ A-Z mất có 48ms kìa :smile:
Tìm hiểu LockBits, UnlockBits, unsafe hoặc PInvoke nhé !

1 Like

lẹ dữ vậy, có tính thời gian load cái hình kia ko, hay chỉ tính thời gian loang?

tổng cộng 50ms lận

PInvoker là qua C++ dll rồi hả? Máy có SSD ko, có chuyển cái BMP qua PNG ko, đọc 1.4MB chắc cũng mất 30ms rồi @_@

1 Like

Toàn bộ từ lúc bắt đầu chạy @@. Chơi thuần C# luôn.
Mới dùng tới LocksBit ,UnLocksBit và unsafe để chơi con trỏ thôi.
PInvoke còn nhanh bằng 4 lần thế :smile:

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?