Bấm lặp K lần (2048)
Xem dạng PDF📖 Bài giảng & lời giải: đây là Bài tập 8 trong bài giảng Thuật toán qua trò chơi 4: Game 2048 trên blog Lập trình thuật toán – có lý thuyết, mô phỏng từng bước, gợi ý và code C++ / Python.
⚠️ Lưu ý: hãy đảm bảo em đã thật sự cố gắng tự làm bài trước, rồi mới xem gợi ý và lời giải nhé!
🎓 Khóa học Lập trình Thuật toán thi đấu của thầy Nguyễn Việt Nam Sơn – 111 buổi video, kèm cặp cá nhân, luyện thi chuyên Tin · HSG Tin học · Tin học trẻ · đội tuyển quốc gia · Olympic/ICPC. 👉 Xem chi tiết khóa học · Thành tích học viên
📞 Đăng ký học: Zalo 0767 666 702 · Facebook Nguyễn Việt Nam Sơn · 🌐 laptrinhthuattoan.blogspot.com
Cho bàn 2048 kích thước $n \times n$ (mỗi ô là 0 hoặc một lũy thừa của 2) và xâu phím $s$ gồm các ký tự L, U, R, D. Người chơi bấm lần lượt hết các ký tự của $s$ (gọi là một lượt), rồi lại bấm lại từ đầu xâu, tổng cộng $K$ lượt. Không sinh ô mới sau mỗi lần bấm; lần bấm không làm bàn thay đổi thì bàn giữ nguyên và không được điểm.
Luật trượt và gộp của 2048 (mô tả cho phím ←, các phím khác tương tự theo hướng tương ứng): trên mỗi hàng, các ô khác 0 được dồn hết về mép trái, giữ nguyên thứ tự. Xét các ô đó lần lượt từ mép trái (mép đích) đi ra: nếu hai ô liền nhau có cùng giá trị $x$ thì chúng gộp thành một ô $2x$ và người chơi được cộng $2x$ điểm. Mỗi ô chỉ được tham gia gộp nhiều nhất một lần trong một lần bấm (ô vừa gộp xong bị "khoá"), và cặp nào gần mép đích hơn thì được gộp trước. Ví dụ hàng 2 2 2 2 bấm ← thành 4 4 0 0 (+8 điểm), hàng 4 4 8 0 bấm ← thành 8 8 0 0 (+8 điểm, ô 8 mới không gộp tiếp với ô 8 cũ).
Hãy in ra bàn sau $K$ lượt và tổng số điểm nhận được.
Dữ liệu vào
- Dòng 1: hai số nguyên $n, K$ ($2 \le n \le 4$, $1 \le K \le 10^{18}$).
- $n$ dòng tiếp theo, mỗi dòng $n$ số nguyên, mỗi số là $0$ hoặc $2^t$ với $1 \le t \le 16$.
- Dòng cuối: xâu $s$ ($1 \le |s| \le 100$) chỉ gồm các ký tự
L,U,R,D.
Kết quả
- $n$ dòng đầu: bàn sau $K$ lượt, mỗi dòng $n$ số cách nhau một dấu cách.
- Dòng cuối: tổng số điểm.
Sample Input
4 1000000000000
8 0 2 2
8 2 4 4
4 2 2 4
8 0 4 8
LDRUR
Sample Output
0 16 4 8
0 4 2 4
0 0 8 16
0 0 0 0
56
Bình luận