cuốn sách gpt4 ai đã làm

Làm cách nào tôi có thể so sánh hai bộ số (nhiều hơn) một cách dễ dàng?

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 07:54:58 29 4
mua khóa gpt4 Nike

Tôi có một bộ ba số và tôi muốn so sánh một bộ số này với một bộ số khác. Tức là mọi số trong nhóm thứ nhất đều nhỏ hơn ít nhất một số trong nhóm kia. Lưu ý số tiếp theo ở nhóm thứ nhất phải nhỏ hơn số ở nhóm thứ haikhác biệtCác số (tức là, {6,1,6} hợp lệ với {8,8,2}, nhưng {6,2,6} không hợp lệ với {8,8,2}). Tôi có một phương pháp làm việc, nhưng nó bạo lực và xấu xí.

Nếu chúng ta có setA và setB và mỗi phần tử có các phần tử a, b và c:

if(setB.a < setA.a)
if(setB.b < setA.b)
if(setB.c < setA.c)
trả về đúng sự thật;
khác nếu(setB.b < setA.c)
if(setB.c < setA.b
trả về đúng sự thật;

vân vân...

câu trả lời hay nhất

EDIT: Tôi vừa nhận ra rằng bạn đã nói rằng các bộ sưu tập được mã hóa cứng thành 3 giá trị. Đây là một thuật toán siêu tổng quát hoạt động trên các bộ sưu tập có kích thước bất kỳ.

Đối với bộ sưu tập 3 giá trị, bạn có thể thực hiện cùng một kết xuất và sắp xếp các phần tử bộ sưu tập, sau đó thực hiện:

if(setB.a < setA.a)
if(setB.b < setA.b)
if(setB.c < setA.c)
trả về đúng sự thật;
trả về sai;

====================================================== ========

Thuật toán chung:

Đây là phương pháp hiệu quả nhất hiện lên trong đầu tôi ngay lập tức.

Mã giả (nhiều Pythonic hơn Java, xin lỗi - hy vọng các nhận xét giải thích):

list l1 = set1.items() // lấy các mục ra
danh sách l2 = set2.items()

l1 = sắp xếp(l1)
l2 = Sort(l2) //sắp xếp danh sách

int set2idx1 = l1[0].find_closest_Greater_than_value(l2) //tìm kiếm nhị phân hay gì đó
nếu set2idx1 tồn tại:
l2 = l2[set2idx1+1:] //trong python điều này có nghĩa là l2 được gán lại cho một mảng con của l2 bắt đầu từ set2idx1+1 cho đến hết l2
khác:
trả về sai

for(int i=1; i
int set2idxi = l1[i].find_closest_Greater_than_value(l2) // tìm kiếm nhị phân hay gì đó
nếu set2idxi tồn tại:
l2 = l2[set2idxi+1:]
khác
trả về sai

trả lại sự thật

Hãy bình luận nếu có điều gì bạn không hiểu.

Đã chỉnh sửa:

Giải thích về thuật toán chung cho bất kỳ bên quan tâm nào:

  1. Kết xuất các phần tử của bộ sưu tập vào một mảng
  2. Sắp xếp các mảng này
  3. Lặp lại mảng đầu tiên và xem liệu có giá trị nào trong mảng thứ hai lớn hơn giá trị hiện tại hay không. Nếu vậy, hãy lấy chỉ mục của giá trị đó và xóa mọi thứ trước nó (bao gồm cả chỉ mục đó) và gán lại biến mảng thứ hai cho những gì còn lại.
  4. Nếu không có giá trị nào như vậy tồn tại (vì nó không tồn tại hoặc bạn đã hết giá trị để kiểm tra, hãy trả về false). Ngược lại, cuối cùng trả về true.

Ý tưởng ở đây là vì mảng đã được sắp xếp nên bạn biết rằng bất kỳ phần tử nào lớn hơn phần tử phù hợp trong mảng thứ hai sẽ lớn hơn phần tử bạn đang kiểm tra trong mảng đầu tiên. Vì vậy, bạn có thể xóa trực tiếp giá trị thấp hơn và vì bạn không muốn sử dụng cùng một giá trị nên bạn cũng có thể xóa giá trị tìm thấy. Nếu trả về sai, bạn biết đó là do không có giá trị nào lớn hơn hoặc do các số trong mảng 1 đều lớn hơn các số trong mảng 2 hoặc do không có đủ số trong mảng 2 lớn hơn các số trong mảng 1.

Làm cách nào tôi có thể so sánh hai bộ số (nhiều hơn) một cách dễ dàng? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/13754967/

29 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress