Giúp mình với !!!!!!!!!!!

Thảo luận trong 'C/C++' bắt đầu bởi vvatu, 17 Tháng hai 2011.

  1. Offline

    vvatu

    • Thành Viên Mới

    Số bài viết:
    2
    Đã được thích:
    0
    Điểm thành tích:
    0
    Mình đang làm bài báo cáo về lập trình, nhưng đang bí, các bác giúp mình với nha!
    đề bài như sau:

    Matrix Chain Multiplication Suppose you have to evaluate an expression like A*B*C*D*E where A,B,C,D and E are matrices. Since matrix multiplication is associative, the order in which multiplications are performed is arbitrary. However, the number of elementary multiplications needed strongly depends on the evaluation order you choose.
    For example, let A be a 50*10 matrix, B a 10*20 matrix and C a 20*5 matrix. There are two different strategies to compute A*B*C, namely (A*B)*C and A*(B*C).
    The first one takes 15000 elementary multiplications, but the second one only 3500.
    Your job is to write a program that determines the number of elementary multiplications needed for a given evaluation strategy.
    [FONT=&quot]Input Specification[/FONT]

    Input consists of two parts: a list of matrices and a list of expressions.
    The first line of the input file contains one integer n ( [IMG] ), representing the number of matrices in the first part. The next n lines each contain one capital letter, specifying the name of the matrix, and two integers, specifying the number of rows and columns of the matrix.
    The second part of the input file strictly adheres to the following syntax (given in EBNF):
    [FONT=&quot]SecondPart = Line { Line } <EOF>[/FONT]
    [FONT=&quot]Line = Expression <CR>[/FONT]
    [FONT=&quot]Expression = Matrix | "(" Expression Expression ")"[/FONT]
    [FONT=&quot]Matrix = "A" | "B" | "C" | ... | "X" | "Y" | "Z"[/FONT]
    [FONT=&quot]Output Specification[/FONT]

    For each expression found in the second part of the input file, print one line containing the word "error" if evaluation of the expression leads to an error due to non-matching matrices. Otherwise print one line containing the number of elementary multiplications needed to evaluate the expression in the way specified by the parentheses.
    [FONT=&quot]Sample Input[/FONT]

    [FONT=&quot]9[/FONT]
    [FONT=&quot]A 50 10[/FONT]
    [FONT=&quot]B 10 20[/FONT]
    [FONT=&quot]C 20 5[/FONT]
    [FONT=&quot]D 30 35[/FONT]
    [FONT=&quot]E 35 15[/FONT]
    [FONT=&quot]F 15 5[/FONT]
    [FONT=&quot]G 5 10[/FONT]
    [FONT=&quot]H 10 20[/FONT]
    [FONT=&quot]I 20 25[/FONT]
    [FONT=&quot]A[/FONT]
    [FONT=&quot]B[/FONT]
    [FONT=&quot]C[/FONT]
    [FONT=&quot](AA)[/FONT]
    [FONT=&quot](AB)[/FONT]
    [FONT=&quot](AC)[/FONT]
    [FONT=&quot](A(BC))[/FONT]
    [FONT=&quot]((AB)C)[/FONT]
    [FONT=&quot](((((DE)F)G)H)I)[/FONT]
    [FONT=&quot](D(E(F(G(HI)))))[/FONT]
    [FONT=&quot]((D(EF))((GH)I))[/FONT]
    [FONT=&quot]Sample Output[/FONT]

    [FONT=&quot]0[/FONT]
    [FONT=&quot]0[/FONT]
    [FONT=&quot]0[/FONT]
    [FONT=&quot]error[/FONT]
    [FONT=&quot]10000[/FONT]
    [FONT=&quot]error[/FONT]
    [FONT=&quot]3500[/FONT]
    [FONT=&quot]15000[/FONT]
    [FONT=&quot]40500[/FONT]
    [FONT=&quot]47500[/FONT]
    [FONT=&quot]15125[/FONT][FONT=&quot][/FONT]
  2. Offline

    Cat-IT

    • Windows NT

    Số bài viết:
    261
    Đã được thích:
    51
    Điểm thành tích:
    60
    trời ới... sao toàn tiếng anh thế này
  3. Offline

    clandn.angel

    • friend

    Số bài viết:
    655
    Đã được thích:
    361
    Điểm thành tích:
    450
    Khóa mấy đây @@
    Môn lập trình gì đây vậy @@, C và C++ đây ư :-o. Ủa mà mình nhớ học mấy môn lập trình làm gì phải báo cáo ghê thế ta :|
  4. Offline

    tdhung2106

    • Thành Viên Mới

    Số bài viết:
    34
    Đã được thích:
    15
    Điểm thành tích:
    0
    cái này có phải là lập trình không vậy?
    dịch ra nè:

    Phép nhân ma trận Xích Giả sử bạn có để đánh giá một biểu thức như A * B * C * D * E với A, B, C, D và E là ma trận. Từ ma trận nhân là kết hợp, trình tự, trong đó phép nhân được thực hiện là tùy ý. Tuy nhiên, số lượng các phép nhân tiểu mạnh mẽ cần thiết phụ thuộc vào trình tự đánh giá mà bạn chọn.
    Ví dụ, giả sử A là một ma trận * 50 10, B a * 10 20 ma trận và C a * 20 5 ma trận. Có hai chiến lược khác nhau để tính toán A * B * C, cụ thể là (A * B) * C và * A (B * C).
    Người đầu tiên có 15000 phép nhân bản, nhưng chỉ có một thứ hai 3500.
    Công việc của bạn là viết một chương trình để xác định số lượng các phép nhân cơ bản cần thiết cho một chiến lược đánh giá được.
    Đặc điểm kỹ thuật đầu vào

    Đầu vào bao gồm hai phần: một danh sách các ma trận và danh sách các biểu thức.
    Dòng đầu tiên của tập tin đầu vào có chứa một số nguyên n ( file: / / / C: / Users / TUDOI% 7E1/AppData/Local/Temp/msohtml1/01/clip_image001.gif [/ IMG]), đại diện số ma trận ở phần đầu tiên. Các dòng n tiếp theo từng có một chữ cái vốn, chỉ định tên của các, ma trận và hai số nguyên, xác định số hàng và cột của ma trận.
    Phần thứ hai của tập tin đầu vào đúng tuân thủ các cú pháp sau đây (được đưa ra trong EBNF):
    SecondPart = Line Line} {<EOF>
    Line = Expression <CR>
    Expression = Ma trận | "(" Expression Expression ")"
    Matrix = "A" | "B" | "C" | ... | "X" | "Y" | "Z"
    Đặc điểm kỹ thuật sản lượng

    Đối với mỗi biểu hiện thấy trong phần hai của tập tin đầu vào, in ra một dòng có chứa từ "lỗi" nếu đánh giá của biểu thức sẽ dẫn đến một lỗi do ma trận không phù hợp. Nếu không in một dòng chứa số lượng các phép nhân cơ bản cần thiết để đánh giá biểu thức trong cách xác định bởi các dấu ngoặc đơn.
    Mẫu đầu vào

    9
    A 50 10
    B 10 20
    C 20 5
    D 30 35
    E 35 15
    F 15 5
    G 5 10
    H 10 20
    Tôi 20 25
    A
    B
    C
    (AA)
    (AB)
    (AC)
    (A BC ())
    ((AB) C)
    ((((( DE) F) G) H) I)
    (D (E (F (G (HI )))))
    ((D (EF)) ((GH) I))
    Kết quả mẫu

    0
    0
    0
    lỗi
    10000
    lỗi
    3500
    15000
    40500
    47500
    15125

    giống hệ điều hành hè!
    mà có phải việt hàn không vậy?

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí