Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ หาสตริงที่มีสตริงย่อยพาลินโดรมความยาวสูงสุด k

สมมติว่าเรามีตัวเลขสองตัว n และ k เราพยายามสร้างสตริง S ที่มีตัวอักษรเพียง 3 ชนิดคือ 'a', 'b' และ 'c' ความยาวสูงสุดของสตริงย่อยของ S ที่เป็นพาลินโดรม ไม่เกิน k

เช่น ถ้าค่าที่ป้อนเข้าเป็น n = 3; k = 2 ผลลัพธ์จะได้ "aab" เพราะความยาวคือ 3 และสตริงย่อยพาลินโดรมคือ "aa" ความยาวอย่างน้อย 2 (คำตอบอื่นก็ได้)

ขั้นตอนการแก้ปัญหา

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนดังนี้:

S := สตริงว่าง j := 0 สำหรับ i := 0 เมื่อ i < n เพิ่ม i ทีละ 1 ทำ:    S := S ต่อ (j + ASCII ของ 'a') เป็นตัวอักษร    j := (j + 1) mod 3 คืนค่า S

ตัวอย่างโค้ด

ดูการนำไปใช้จริงด้านล่างเพื่อความเข้าใจที่ดียิ่งขึ้น:

#include <bits/stdc++.h> using namespace std; string solve(int n, int k) {    string S = "";    int j = 0;    for (int i = 0; i < n; i++) {       S += j + 'a';       j = (j + 1) % 3;    }    return S; } int main() {    int n = 3;    int k = 2;    cout << solve(n, k) << endl; }

ข้อมูลนำเข้า

3, 2

ข้อมูลส่งออก

abc