Trang chủ Tin Học Lớp 8 Câu 10. SOẠN VĂN BẢN vanban.cpp Đúng lúc An hào...

Câu 10. SOẠN VĂN BẢN vanban.cpp Đúng lúc An hào hứng làm bài tập tin học nhất thì bàn phím lại bị hỏng: chỉ gõ được các ký tự chữ cái. Nhiệm vụ của An là soạ

Câu hỏi :

Câu 10. SOẠN VĂN BẢN vanban.cpp Đúng lúc An hào hứng làm bài tập tin học nhất thì bàn phím lại bị hỏng: chỉ gõ được các ký tự chữ cái. Nhiệm vụ của An là soạn thảo một văn bản chỉ sử dụng từ trong một danh sách cho trước. An quyết định vẫn làm bài tập trên máy của mình, sau đó copy sang máy của một bạn khác trong lớp và chèn thêm dấu cách vào giữa các từ, giữa hai từ sẽ chèn đúng một dấu cách. Như vậy ít ảnh hưởng đến thời gian sử dụng máy của bạn nhất. Ví dụ: với n = 5 và danh sách các từ cho trước là an, anh, han, tin, hoc; An soạn sẵn dòng anhanhoctin, sau đó mang sang máy của bạn và chèn thêm dấu cách thành anh an hoc tin. Tuy nhiên khi bắt tay vào chèn dấu cách, An mới nhận thấy rằng vấn đề cũng không đơn giản vì có thể có nhiều cách, thậm chí có thể không có cách chèn nếu gõ văn bản sai.Ví dụ: với dòng anhanhoctin ta có một cách đặt dấu cách khác thỏa mãn là: an han hoc tin. Yêu cầu: Cho từ và một xâu S không có dấu cách. Hãy xác định số cách chèn kí tự trắng (dấu cách) vào xâu S để được một văn bản chỉ gồm các từ có trong từ đã cho. Dữ liệu: - Dòng đầu tiên chứa số nguyên n (1 < n 100). - dòng sau: mỗi dòng chứa một từ được sử dụng (mỗi từ không quá 20 ký tự, các từ khác nhau từng đôi một). - Dòng cuối cùng là xâu S chứa không quá 100 kí tự. Kết quả: một số nguyên xác định số cách chèn dấu cách, nếu không có cách chèn theo yêu cầu thì ghi ra số 0. Ví dụ: INPUT OUTPUT 5 anh an han hoc tin anhanhoctin 2 (Giải thích: Hai cách đặt dấu cách là: anh an hoc tin; an han hoc tin)

Lời giải 1 :

// ko làm thì hơi có lỗi với bản thân
#include<bits/stdc++.h>
using namespace std;

const int MAX = 105;
const int MOD = 1e9 + 7;
int dp[MAX];
vector<string> words;
string s;

bool check(int i, int j) {
    string sub = s.substr(i, j - i + 1);
    for (string word : words) {
        if (word == sub) return true;
    }
    return false;
}

int main() {
    int n;
    cin >> n;
    words.resize(n);
    for (int i = 0; i < n; i++) {
        cin >> words[i];
    }
    cin >> s;
    int len = s.size();
    dp[0] = 1;
    for (int i = 1; i <= len; i++) {
        for (int j = 0; j < i; j++) {
            if (check(j, i - 1)) {
                dp[i] = (dp[i] + dp[j]) % MOD;
            }
        }
    }
    cout << dp[len];
    return 0;
}

Bạn có biết?

Tin học là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng. Tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin. Hãy tận dụng sức mạnh của tin học để giải quyết các vấn đề và sáng tạo ra những giải pháp mới!

Nguồn :

Wikipedia - Bách khoa toàn thư

Tâm sự lớp 8

Lớp 8 - Năm thứ ba ở cấp trung học cơ sở, học tập bắt đầu nặng dần và sang năm lại là năm cuối cấp, áp lực lớn dần. Hãy chú ý đến sức khỏe, cân bằng giữa học và nghỉ ngơi để đạt hiệu quả tốt nhất!

Nguồn :

sưu tập

Liên hệ hợp tác hoặc quảng cáo: gmail

Điều khoản dịch vụ

Copyright © 2021 HOCTAPSGK