Hướng giải quyết bài toán ghép cặp mỗi giá trị của X với 1 giá trị của Y

Dear các bác
Chả là em có 1 bài tập làm code. Với đầu vào biết trước
VD: Các giá trị đầu vào X là: 5,10,15
Các giá trị đầu vào Y là : 1,2

Giờ em muốn tìm cách để mỗi giá trị của X nhận 1 giá trị của Y là 1 mảng riêng và phân biệt các mảng được.
VD: (5,1), (5,2) , (10,1), (10,2), (15,1), (15,2). Tổng cộng là 6 giá trị

Các bác có ai có kinh nghiệm cho em hướng giải quyết bài toán như trên ạ.
Em cảm ơn

Đây bạn :smiley:

# pseudo
cartesian(X.uniq!, Y.uniq!)

Ừ thì thớt hỏi hướng làm :smiley:

2 Likes

Thanks bạn rogp10 đã giúp nhé. Nhưng mình viết trên 1 ngôn ngữ lập trình khác nên hàm này không sử dụng được nhé

C#

int[][] doSomething(int[] xList, int[] yList)
{
    var outputSize = xList.Length * yList.Length;
    var output = new int[outputSize][];
    for (var i = 0; i < xList.Length; i += 1)
        for (var j = 0; j < yList.Length; j += 1)
            output[i * yList.Length + j] = new int[]{xList[i], yList[j]};
    return output;
}

Bạn thêm tag của ngôn ngữ lập trình bạn muốn vào tiêu để bài viết nhé!

1 Like

list(itertools.product(x, y))

:V :V :V

1 Like

Đấy là mã giả thôi bạn. Bạn phải “tự thân vận động” viết lại hàm chứ.

1 Like

Dear anh em. Tôi sử dụng ngôn ngữ lập trình không phổ biến lắm với mọi người là Visual Basic. Vì vậy nó không có thư viện sẵn như hàm catersian(X,Y) như anh em.

Ngoài ra:
Tập hợp của mình lại là 1 khoảng chạy, khi nhập đầu cuối sẽ là giá trị
VD: X là tập hợp từ 5-15. Nhập đầu là 5 cuối là 15 và khoảng cách là 5.
Code: for X=5 to 15 step 5
ListX[ ]=X
next

Mình muốn gán giá trị ListX[1]=5, ListX[2]=10, ListX[3]=15 thì nên gán như thế nào.
Tượng tự như phần Y và tôi sẽ dùng các tập giá trị (X,Y) riêng biệt để tính.
Thanks

Làm 2 vòng for như bạn @noz1995 đó bạn , m sài http://converter.telerik.com/ để chuyển C# sang VB cho bạn đây @@

Private Function doSomething(ByVal xList As Integer(), ByVal yList As Integer()) As Integer()()
    Dim outputSize = xList.Length * yList.Length
    Dim output = New Integer(outputSize - 1)() {}

    For i = 0 To xList.Length - 1

        For j = 0 To yList.Length - 1
            output(i * yList.Length + j) = New Integer() {xList(i), yList(j)}
        Next
    Next

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