المپدیا

دانش‌نامه‌ی المپیاد کامپیوتر ایران

ابزار کاربر

ابزار سایت


سوالات المپیاد:دوره ی تابستان:دوره ی ۱۱:عملی:سوال ۳

برج‌های هانوی آسمانی

یک برج هانوی از 3 میله و $n$ دیسک با اندازه‌های $1…n$ تشکیل شده است. یک حالت معتبر از هانوی عبارت‌است از قرار گرفتن دیسک‌ها روی میله‌های مختلف به‌طوری که هیچ دیسکی روی دیسکی کوچک‌تر از خودش قرار نگیرد. یک حرکت معتبر یعنی حرکت دادن بالاترین دیسک یک میله به یک میله‌ی دیگر بطوری که حالت اولیه و حالت تولید شده هر دو معتبر باشند.

$k$ حالت معتبر با شماره‌های $1…k$ داده شده است. می‌خواهیم ببینیم اگر بخواهیم حالت ۱ را با کم‌ترین حرکت به حالت $k$ تبدیل کنیم در حین تبدیل کدام‌یک از حالت‌های دیگر تولید می‌شوند. فرض کنید هر حرکت ۱ ثانیه طول می‌کشد. برنامه‌ی شما باید شماره‌ی حالت‌هایی که تولید می‌شوند را به ترتیب زمان تولید بنویسید.

ورودی

در ورودی در خط اول اعداد $n$ و $k$ ‌($1 \leq n,k \leq 150$) آمده است. سپس در $k$ سطر در هر سطر $n$ عدد آمده است. اگر $x$، عدد $i$ام از سطر $j$ ام این اعداد باشد($1 \leq x \leq 3$ و $1 \leq i \leq n$ و $1 \leq j \leq k$) به این معنی است که در حالت $j$ دیسک شماره‌ی $i$ در میله‌ی $x$ام قرار دارد.

خروجی

به ترتیب زمان تولید، شماره‌ی حالت‌هایی را که در حین تبدیل حالت ۱ به حالت $k$ تولید می‌شوند بنویسید.

محدودیت‌ها

  • محدودیت زمان: ۵ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

ورودی و خروجی نمونه

ورودی نمونه خروجی نمونه
2 6
1 1
2 3
1 2
2 1
3 1
3 3
1
4
2
6

پاسخ


ابزار صفحه