Hiển thị kết quả từ 1 đến 5 / 5
  1. #1
    Tham gia
    15-04-2011
    Bài viết
    9
    Like
    0
    Thanked 0 Times in 0 Posts

    Tệ thật ! Giúp đỡ về thuật toán tam giác pascal

    Cần giúp đỡ về thuật toán, càng rõ ràng càng tốt
    Đề bài như sau: Tam giác pascal bậc n là tam giác có n + 1 dòng và có dạng:
    n=0: 1
    n=1: 1 1
    n=2: 1 2 1
    n=3: 1 3 3 1
    n=4: 1 4 6 4 1
    Trong tam giác số này, giá trị các số trong hàng thứ n tuân theo quy luật sau:
    - Số ở cột thứ n+1 và cột thứ nhất luôn bằng 1.
    - Mỗi số ở cột n đến cột 2 bằng tổng hai số đứng ở hàng trên cùng cột và cột trước nó.
    Giá trị các số ở hàng n là hệ số khi khai triển (x+y)^n
    a. In ra tam giac pascal bậc n.
    b. khai triển (x+y)^n
    Ví dụ: n=3 thì in: x^3+3x^2y^1+3x^1y^2+y^3
    n=4 thì in: x^5-5x^4y^1+10x^3y^2+10x^2y^3+5x^4y^1-y^5

    Em có bài giải sẵn đây nhưng không hiểu thuật toán của nó. Có anh chị em cô bác nào giúp giùm em với. Thank you nhiều. Nếu có cách giải khác dễ hiểu hơn thì làm ơn chỉ cho em với. Cám ơn lần nữa.

    Bài giải nó đây:

    Program tamgiacso;
    var m:array[1..100] of integer;
    n,i,j,bac:integer;
    begin
    write('Nhap bac n: ');readln(n);
    for i:=1 to n+1 do m[i]:=0; m[1]:=1;
    writeln('Tam giac pascal bac ',n,' : ');
    for i:=0 to n do
    begin
    for j:=i+1 downto 2 do m[j]:=m[j]+m[j-1];
    for j:=1 to i+1 do write(m[j]:4);
    writeln;
    end;
    writeln;
    bac:=n;
    writeln('Khai trien nhi thu bac n: ');
    write('x^',bac);
    for i:=2 to n do
    Begin
    bac:=bac-1;
    write('+',m[i],'x^',bac,'y^',n-bac);
    end;
    write('+y^',n);
    readln;
    end.
    Quote Quote

  2. #2
    Tham gia
    05-08-2010
    Bài viết
    313
    Like
    9
    Thanked 73 Times in 69 Posts
    **In ra tam giác Pascal bậc n

    for j:=i+1 downto 2 do m[j]:=m[j]+m[j-1];
    Vòng for này có nhiệm vụ tính các số trong dòng i dựa trên dòng i-1 theo công thức mà bạn đưa ra

    for j:=1 to i+1 do write(m[j]:4);
    Vòng for này thì in ra dòng i mà vòng for trên vừa tính được

  3. #3
    Tham gia
    15-04-2011
    Bài viết
    9
    Like
    0
    Thanked 0 Times in 0 Posts

    cảm ơn nhiều

    cảm ơn nhiều.
    Em là dân nghiệp dư nên có thể nói rõ hơn ko ?

  4. #4
    Tham gia
    05-08-2010
    Bài viết
    313
    Like
    9
    Thanked 73 Times in 69 Posts
    Quote Được gửi bởi kysibongdem_494 View Post
    cảm ơn nhiều.
    Em là dân nghiệp dư nên có thể nói rõ hơn ko ?
    Nói thế này là rõ rồi còn gì

  5. #5
    Tham gia
    26-03-2017
    Bài viết
    2
    Like
    0
    Thanked 0 Times in 0 Posts
    >> TAM GIÁC PASCAL << (Phương pháp: dùng mảng 2 chiều mời ae tham khảo)

    var a:array[0..1000,0..1000] of longint;
    i,j,n,k:longint;
    begin
    readln(n);
    a[1,1]:=1;
    k:=2;
    for i:=2 to n+1 do
    begin
    for j:=1 to k do a[i,j]:=a[i-1,j-1]+a[i-1,j];
    inc(k);
    end;
    k:=1;
    for i:=1 to n+1 do
    begin
    for j:=1 to k do write(a[i,j],' ');
    inc(k);
    writeln;
    end;
    readln
    end.

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •