[Buổi 11][Quay lui & Cắt tỉa][WS] Bài 1: Sinh mọi mã ký tự khác nhau


LÀM BÀI

Points: 100
Time limit: 2.0s
Memory limit: 256M

Author:
Problem types

Sinh mọi mã ký tự khác nhau

Bối cảnh và bài toán

Một hệ thống thử nghiệm cần liệt kê mọi mã khác nhau có thể tạo bằng cách hoán vị toàn bộ ký tự của một chuỗi. Một số ký tự có thể trùng nhau, vì vậy hai cách đổi chỗ khác nhau nhưng tạo cùng chuỗi chỉ được tính một lần.

Yêu cầu

In số mã khác nhau và liệt kê chúng theo thứ tự từ điển tăng dần.

Input

  • Một dòng chứa chuỗi chữ thường s.

Output

Dòng đầu là số lượng mã. Các dòng sau là từng mã theo thứ tự từ điển.

Ràng buộc

  • 1 <= |s| <= 8
  • s chỉ gồm a..z

Chấm điểm

Subtask Điểm Điều kiện Official tests
S1 20% n ≤ 6 01–04
S2 30% n ≤ 7 05–10
S3 50% Không có ràng buộc bổ sung 11–20

Ví dụ 1

Input

aab

Output

3
aab
aba
baa

Giải thích. Có đúng ba hoán vị khác nhau vì hai ký tự a giống nhau.

Ví dụ 2

Input

ab

Output

2
ab
ba

Giải thích. Hai ký tự khác nhau tạo hai hoán vị.

Thông tin bài tập

Thuộc tính Giá trị
Mã bài DSA-M04-B11-WS01
Buổi B11
Loại bài WORKSHOP
Mức độ khó Trung bình (Medium)
Thời gian làm bài khuyến nghị 45 phút
Time limit 2 giây
Memory limit 256 MB
Tổng điểm 100
Chuẩn ngôn ngữ tham chiếu C++11 trở lên
Yêu cầu bổ sung Decision Note

Nguồn: Phỏng theo CSES Problem Set — Creating Strings (Task 1622).

Tham khảo: https://cses.fi/problemset/task/1622/


Comments

There are no comments at the moment.

Zalo