Thứ Bảy, 13 tháng 7, 2019

Bài 4 - Giải thuật nhập môn

Một dãy tuyến tính là 1 bộ 3 có thứ tự (s1,s2,s3) thỏa mãn s2-s1=s3-s2
Ví dụ: (1,2,3), (2,4,6), (14,21,28) là các dãy tuyến tính
Cho trước S (3≤S≤30) số nguyên tăng thuộc đọan [1,100], đếm số các dãy tuyến tính
Dữ liệu: Cho trong tập tin văn bản LSEQ.INP, dòng đầu là số nguyên S, dòng tiếp theo là S số nguyên, cách nhau ít nhất 1 khỏang trắng
Kết quả: Cho trong tập tin văn bản LSEQ.OUT, chứa số nguyên duy nhất chỉ số dãy tuyến tính tìm được.
Ví dụ:
LSEQ.INP        LSEQ.OUT
7
1 2 3 4 6 8 9       5
Giải thích:
5 dãy tuyến tính tìm được là:
1 2 3
2 3 4
2 4 6
3 6 9
4 6 8

8 nhận xét:

  1. Uses crt;
    Var n,i,j,k,d:longint;
    f:array[1..30] of longint;
    procedure nhap;
    Var fi:text;
    Begin
    assign(fi,'LSEQ.INP');
    reset(fi);
    read(fi,n);
    For i:=1 to n do
    read(fi,f[i]);
    close(fi);
    end;
    procedure xuat;
    Var fo:text;
    Begin
    assign(fo,'LSEQ.OUT');
    rewrite(fo);
    Write(fo,d);
    close(fo);
    end;
    Begin
    nhap;
    For i:=1 to n-2 do
    For j:=i+1 to n-1 do
    For k:=j+1 to n do
    Begin
    If f[k]-f[j]=f[j]-f[i] then d:=d+1;
    end;
    xuat;
    end.

    Trả lờiXóa
  2. Quách Đông Đônglúc 22:39 27 tháng 7, 2019

    #include <iostream >
    #include <algorithm >
    #include <fstream >
    using namespace std;
    int main(int argc, char** argv) {
    ifstream cin;
    cin.open ("D:/Dong/LSEQinp.txt");
    ofstream cout;
    cout.open ("D:/Dong/LSEQout.txt");
    int s,n[100],d=0;
    cin > >s;
    for (int i=0;i <s;i++){
    cin > >n[i];
    }
    sort(n,n+s);
    for (int i=0;i <s-2;i++){
    for (int j=i+1;j <s-1;j++){
    for (int k=j+1;k <s;k++){
    if (n[k]-n[j]==n[j]-n[i]) d++;
    }
    }
    }
    cout < <d;
    cin.close();
    cout.close();
    return 0;
    }

    Trả lờiXóa
  3. Nhận xét này đã bị tác giả xóa.

    Trả lờiXóa
  4. Nhận xét này đã bị tác giả xóa.

    Trả lờiXóa
  5. Nhận xét này đã bị tác giả xóa.

    Trả lờiXóa
  6. Nhận xét này đã bị tác giả xóa.

    Trả lờiXóa
  7. Nhận xét này đã bị tác giả xóa.

    Trả lờiXóa
  8. #include

    using namespace std;

    int main()
    {
    int S,a[40],d=0;
    map b;
    freopen("LSEQ.INP","r",stdin);
    freopen("LSEQ.OUT","w",stdout);
    cin >> S;
    for (int i=0;i> a[i];
    b[a[i]] = "co";
    }
    for (int i=0;i<S-2;i++){
    for (int j=i+1;j<S-1;j++){
    if (b[a[j]*2-a[i]]=="co"){
    d +=1;
    }
    }
    }
    cout << d;
    return 0;
    }

    Trả lờiXóa

Dùng nick gmail để bình luận. Nếu lần đầu tiên bạn làm điều này thì hệ thống sẽ chuyển bạn sang trang blogger và hỏi bạn chọn tên hiển thị là gì. Bạn hãy nhập tên hiển thị rồi ok là được. Những lần bình luận sau hệ thống sẽ không hỏi nữa. Cảm ơn!

Bài được xem nhiều nhất