สมมติว่าเรามีตัวเลขสองตัว 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