Trang chủ Tin Học Lớp 9 lm c++ bác Sáu là chủ một cửa tiệm bánh làm bảng hiệu. Hôm nay có khách hàng thuê bác...
Câu hỏi :

lm c++

bác Sáu là chủ một cửa tiệm bánh làm bảng hiệu. Hôm nay có khách hàng thuê bác thi công một bảng hiệu với nội dung trên bảng là một xâu s và phải sử dụng loại Decal đặc biệt. Đây là loại Decal không thể in tại cửa hàng mà phải nhập khẩu cả cuộn, mỗi cuộn có nhiều ô liên tiếp nhau, mỗi ô là một ký tự in sẵn. A L A B B A B Do không muốn phải phân cắt dây Decal thành nhiều đoạn, Bác Sáu muốn tìm đoạn có các ký tự liên tiếp trùng khớp với những ký tự trong đoạn nội dung của khách hàng. Tuy nhiên việc tìm trực tiếp trên Decal rất khó khăn. Rất may phía nhà cung cấp có gửi một tệp tin văn bản ứng với các kí tự trên dãy Decal. Em hãy thử giúp Bác Sáu tìm vị trí các đoạn Decal phù hợp với yêu cầu của Bác. Dữ liệu vào: - Dòng đầu ghi xâu, cho biết nội dung mà khách hàng yêu cầu (|s|<= 10^3) - Dòng tiếp theo ghi xâu t, cho biết dãy ký tự có trên Decal(|t|<= 10^5) - Các ký tự đều là chữ cái in hoa. Dữ liệu đảm bảo luôn tìm được ít nhất một đoạn phù hợp. Dữ liệu ra: Gồm nhiều dòng, mỗi dòng ghi vị trí bắt đầu và vị trí kết thúc của đoạn Decal phù hợp với yêu cầu của khách hàng, hai số đặt cách nhau một khoảng trắng. Ký tự đầu tiên được xem là vị trí 1. Ví dụ:

DECAL.INP                        DECAL.OUT

AB                                            3 4 

ALABBAB                                   5 6

                                                  6 7

Lời giải 1 :

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
    string s1, s2;
    getline(cin, s1);
    getline(cin, s2);
    string r=s1;
    reverse(r.begin(),r.end());
    for (int i = 0; i <= s2.size() - s1.size(); ++i) {
        if (s2.substr(i,s1.size())==s1||s2.substr(i,s1.size())==r)
            cout<<i+1<<" "<<i+s1.size()<<endl;
    }
    return 0;
}

 

Lời giải 2 :

#include <bits/stdc++.h>
using namespace std;

int main() {
    freopen("DECAL.INP", "r", stdin);
    freopen("DECAL.OUT", "w", stdout);

    string s1, s2;
    getline(cin, s1);
    getline(cin, s2);
    string rev = s1;
    reverse(rev.begin(), rev.end());

    for (int i = 0; i < s2.length() - s1.length() + 1; i++)
        if (s1 == s2.substr(i, s1.length()) || rev == s2.substr(i, s1.length())) 
            cout << i + 1 << " " << i + s1.length() << endl;

    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 9

Lớp 9 - Là năm cuối ở cấp trung học cơ sở, chúng ta sắp phải bước vào một kỳ thi căng thẳng và sắp chia tay bạn bè, thầy cô. Áp lực từ kỳ vọng của phụ huynh và tương lai lên cấp 3 thật là lớn, nhưng hãy tin vào bản thân và giữ vững sự tự tin!

Nguồn :

sưu tập

Copyright © 2024 Giai BT SGK