trang chủ / bài tập / toypiles

Xếp đồ chơi thành đống

Đề bài

Mô tả

Masha có n đồ chơi được đánh số từ 1 đến n. Một cách sắp xếp là một cách chia toàn bộ n đồ chơi thành các đống không rỗng. Thứ tự các đống cũng như thứ tự đồ chơi trong mỗi đống không quan trọng: hai cách sắp xếp được coi là khác nhau nếu tồn tại hai đồ chơi nằm chung một đống ở cách này nhưng nằm ở hai đống khác nhau ở cách kia.

Ban đầu tất cả n đồ chơi nằm chung trong một đống. Mỗi thao tác, Sasha lấy đúng một đồ chơi từ đống đang chứa nó và đặt sang một đống khác; đống mới có thể được tạo ra và đống cũ có thể biến mất nếu nó trở nên rỗng.

Sasha muốn thử tất cả các cách sắp xếp, mỗi cách đúng một lần, với số thao tác ít nhất. Hãy giúp Sasha: in ra một dãy các cách sắp xếp sao cho

  • cách sắp xếp đầu tiên là trạng thái ban đầu (tất cả đồ chơi trong một đống);
  • mỗi cách sắp xếp xuất hiện đúng một lần;
  • hai cách sắp xếp liên tiếp trong dãy khác nhau đúng một thao tác.

Nếu có nhiều đáp án, in ra bất kỳ đáp án nào.

Dữ liệu vào

Một dòng duy nhất chứa số nguyên n là số đồ chơi.

Dữ liệu ra

Dòng đầu tiên in số lượng cách sắp xếp khác nhau.

Mỗi dòng tiếp theo in một cách sắp xếp, theo thứ tự Sasha sẽ thử. Trong mỗi đống, các đồ chơi được viết theo thứ tự tăng dần; các đống được viết theo thứ tự tăng dần của đồ chơi nhỏ nhất trong đống. Mỗi đống được bọc trong cặp ngoặc nhọn, các số trong một đống và các đống liên tiếp cách nhau bởi dấu phẩy, không có dấu cách (xem ví dụ).

Ràng buộc

  • 1n10

Ví dụ

Input Output Giải thích
3 5
{1,2,3}
{1,2},{3}
{1},{2},{3}
{1},{2,3}
{1,3},{2}
5 cách chia 3 đồ chơi thành các đống. Bắt đầu từ đống chung {1,2,3}, chuyển đồ chơi 3 ra đống mới, rồi chuyển 2 ra đống mới, rồi chuyển 3 sang đống chứa 2, cuối cùng chuyển 3 sang đống chứa 1. Một đáp án khác cũng được chấp nhận nếu thoả mãn cả ba điều kiện.
2 2
{1,2}
{1},{2}
Chỉ có 2 cách sắp xếp; chuyển đồ chơi 2 ra đống riêng là đủ.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0