Trang Chủ Tài chính Cá nhân Java Lập trình Thách thức: Thực hiện lại Tháp Hà Nội - đầu

Java Lập trình Thách thức: Thực hiện lại Tháp Hà Nội - đầu

Video: BÀI TẬP LẬP TRÌNH C 4.1 - CHƯƠNG TRÌNH IN RA CÁC SỐ NGUYÊN TỐ TRONG KHOẢNG TỪ 1 ĐẾN N 2025

Video: BÀI TẬP LẬP TRÌNH C 4.1 - CHƯƠNG TRÌNH IN RA CÁC SỐ NGUYÊN TỐ TRONG KHOẢNG TỪ 1 ĐẾN N 2025
Anonim

Thử thách này sẽ giúp bạn sử dụng tài năng lập trình của mình để viết một chương trình Java sẽ in ra các bước cần thiết để giải quyết một câu đố Tower of Hanoi với số lượng đĩa.

Tháp Hà Nội là một câu đố logic cổ điển bao gồm ba chốt đứng và một số đĩa có đường kính khác nhau. Mỗi đĩa có một lỗ ở giữa, cho phép đĩa được trượt trên ghim.

Câu đố bắt đầu với tất cả các đĩa xếp chồng lên một trong những cái chốt, với đĩa lớn nhất ở dưới cùng và nhỏ nhất ở đầu trang. Đối tượng của câu đố là di chuyển đống đĩa vào một trong các chốt khác, tuân theo hai quy tắc đơn giản: (1) bạn chỉ có thể di chuyển một đĩa cùng lúc, và (2) bạn không bao giờ có thể đặt đĩa lớn hơn vào đầu của một cái nhỏ hơn.

Hình dưới đây cho thấy giải pháp cho một chồng ba đĩa. Như bạn thấy, giải pháp đòi hỏi 7 bước:

  1. Di chuyển Disk 1 từ Peg 1 đến Peg 3.

  2. Di chuyển Disk 2 từ Peg 1 đến Peg 2.

  3. Move Disk 1 từ Peg 3 đến Peg 2.

  4. Di chuyển Disk 3 từ Peg 1 đến Peg 3.

  5. Di chuyển Disk 1 từ Peg 2 sang Peg 1.

  6. Di chuyển Disk 2 từ Peg 2 đến Peg 3.

  7. Giải pháp cho Tháp Hà Nội với ba đĩa.

Câu đố thú vị khi bạn bắt đầu thêm đĩa vào vị trí bắt đầu. Với ba đĩa, câu đố chỉ đòi hỏi 7 bước để giải quyết. Với bốn đĩa, 15 động được yêu cầu. Với năm đĩa, bạn sẽ cần 31 di chuyển. Sáu đĩa đòi hỏi 64 bước.

Nếu bạn theo dõi bài toán, số lần di chuyển cần thiết để giải quyết câu đố tăng dần theo số lượng đĩa tăng lên. Cụ thể, số lần di chuyển cần thiết để di chuyển đĩa

n

là 2 n - 1. Ví dụ, một chồng 20 đĩa sẽ yêu cầu 2 20 - 1 di chuyển; đó là hơn một triệu di chuyển! Một huyền thoại thú vị có liên quan đến câu đố: Tại một ngôi chùa ở Hà Nội, các nhà sư đã làm việc trên một tháp Towers của Hà Nội với 64 đĩa kể từ khi tạo ra trái đất. Khi họ kết thúc, thế giới sẽ chấm dứt. Thật may mắn, chúng ta phải chờ đợi rất lâu: Nếu các nhà sư có thể di chuyển một đĩa mỗi giây, sẽ là 580 tỷ năm nữa trước khi họ hoàn thành câu đố. Thách thức của bạn rất đơn giản: Viết một chương trình Java sẽ in các bước cần thiết để giải quyết một tháp Towers của Hà Nội cho số lượng đĩa. Chương trình đầu tiên nên nhắc nhở người dùng về số lượng đĩa. Sau đó, nó sẽ hiển thị các bước, một trong mỗi dòng.Mỗi bước cần chỉ ra cái chốt nào để di chuyển một đĩa từ đó, và có chốt để di chuyển đĩa. Các bước cũng nên được đánh số theo thứ tự.

Sau khi hoàn tất, chương trình nên lặp lại, yêu cầu người sử dụng về số lượng đĩa một lần nữa. Chương trình sẽ kết thúc khi người dùng nhập 0.

Đây là một mẫu của giao diện điều khiển mà chương trình của bạn sẽ tạo ra:

Có bao nhiêu đĩa? (0 đến kết thúc)

3

1: 1 đến 3 2: 1 đến 2 3: 3 to 2 4: 1 đến 3 5: 2 to 1 6: 2 to 3 7: 1 to 3 Có bao nhiêu đĩa ? (0 để kết thúc) 0 Chỉ có yêu cầu khác để giải quyết vấn đề này là giải pháp của bạn phải sử dụng chương trình đệ quy. Nói cách khác, giải pháp của bạn phải bao gồm một phương pháp tự gọi mình là để giải quyết câu đố. Lập trình đệ quy có thể là một thách thức, vì vậy đây là một vài gợi ý cho giải pháp của câu đố này:

Câu đố bao gồm ba cái chốt. Một trong số chúng chứa các stack bắt đầu của đĩa; gọi cái chốt này

chốt nguồn

  • . Một trong hai cái còn lại là ghim mà bạn muốn di chuyển đống đĩa vào; gọi cái chốt này mục tiêu bị khóa . Chốt thứ ba có sẵn để bạn sử dụng như một chốt trung gian để lưu trữ đĩa tạm thời khi bạn di chuyển chúng. Hãy gọi cái chốt này là giá đỡ phụ . Phương thức đệ quy của bạn nên chấp nhận ba tham số: số lượng đĩa cần di chuyển, chốt nguồn, và chốt mục tiêu. Sử dụng các số nguyên 1, 2, và 3 để biểu diễn các chốt. Ý tưởng cơ bản của việc giải quyết các câu đố đệ quy là: Để di chuyển một đống đĩa từ một chốt nguồn đến một chốt mục tiêu đòi hỏi ba bước:

  • Di chuyển tất cả các đĩa trong ngăn xếp ngoại trừ đĩa đáy phụ tùng.

  • Di chuyển đĩa lớn nhất trong ngăn xếp ban đầu đến chốt đích.

    1. Di chuyển ngăn xếp mà bạn đã di chuyển trong Bước 1 từ chốt bổ sung vào ghim mục tiêu.

    2. Tất nhiên, các quy tắc cho phép bạn di chuyển chỉ một đĩa mỗi lần, vì vậy bạn không thể hoàn thành Bước 1 và 3 của thủ tục được đưa ra ở đây bằng cách chỉ đơn giản là chọn lên ngăn xếp và di chuyển nó. Đó là nơi mà đệ quy đưa vào. Đối với bước 1 và 3, bạn gọi phương pháp đệ quy, mỗi lần chỉ định một ít đĩa hơn sẽ được di chuyển, và mỗi lần sử dụng chốt mục tiêu trước đó làm chốt bổ sung.

    3. Tự hỏi lý do tại sao phương pháp đệ quy không cần phải chấp nhận chốt bổ sung như một đối số? Bởi vì bạn có thể dễ dàng tính toán nó, cho nguồn và đích chốt. Vì chỉ có ba chốt, được đánh số 1, 2 và 3, tổng của ba chốt là 6 (1 + 2 + 3). Với chốt nguồn và đích, bạn có thể tính toán chốt bằng cách lấy đi phần chốt nguồn và đích từ 6. Ví dụ, nếu chốt nguồn là 1 và chốt mục tiêu là 3, thì chốt bổ sung phải là 2 vì

  • 6 - 3 - 1 = 2.

  • Để có giải pháp, hãy đi tới tab Tải xuống của

    Máy tính Java cho tất cả mọi người,

trang sản phẩm Ấn bản lần 4. Chúc may mắn!

Java Lập trình Thách thức: Thực hiện lại Tháp Hà Nội - đầu

Lựa chọn của người biên tập

Cách lọc một nguồn dữ liệu kết hợp trong Word 2013 - núm vú

Cách lọc một nguồn dữ liệu kết hợp trong Word 2013 - núm vú

Trong tài liệu Word 2013, lọc một nguồn dữ liệu loại trừ các bản ghi nhất định (hoặc xem một cách khác, nó chỉ bao gồm một số bản ghi) dựa trên một hoặc nhiều tiêu chí mà bạn chỉ định. Ví dụ: bạn có thể muốn chỉ bao gồm các địa chỉ từ một thành phố hoặc tiểu bang nhất định, hoặc chỉ những địa chỉ phù hợp với địa chỉ ...

Cách Tìm Stuff bạn không thể gõ trong Word 2007 - núm vú

Cách Tìm Stuff bạn không thể gõ trong Word 2007 - núm vú

Word 2007 giúp tìm các ký tự đặc biệt, không in được trong tài liệu của bạn. Sử dụng hộp thoại Tìm và Thay thế, bạn có thể tìm kiếm những thứ như tab, dấu phân cách, dấu thập phân, khoảng trống và những thứ khác mà bạn không thể tạo ra từ bàn phím. Gọi hộp thoại Tìm và Thay thế. Nếu cần thiết, hãy nhấp vào nút Thêm để ...

Cách Tìm Định dạng trong Word 2007 - núm vú

Cách Tìm Định dạng trong Word 2007 - núm vú

Bạn có thể sử dụng lệnh Tìm để đánh cắp tài liệu Word 2007 của bạn để định dạng thông tin. Ví dụ, nếu bạn chỉ muốn tìm những trường hợp của từ lie có chữ đậm, bạn có thể làm điều đó. Ví dụ này tìm kiếm trứng ngỗng văn bản với kích thước phông chữ là 24 điểm trong một ...

Lựa chọn của người biên tập

Làm thế nào để Thoả Nhận Hợp Đồng Máy chủ Web - núm vú

Làm thế nào để Thoả Nhận Hợp Đồng Máy chủ Web - núm vú

Trên thực tế, đa số của máy chủ web không hoàn lại tiền nếu bạn để lại trước khi thời hạn hợp đồng của bạn kết thúc. Trong thực tế, nếu bạn có một thỏa thuận giá rẻ trên hosting của bạn, nó có thể có các điều khoản và điều kiện yêu cầu bạn xem ra thời hạn của hợp đồng hoặc trả tiền cho đặc quyền ...

Cách quản lý tập tin với Control Panel của Website - núm vú

Cách quản lý tập tin với Control Panel của Website - núm vú

Bảng điều khiển của bạn cung cấp cho bạn một cách tiện dụng để quản lý các tệp của bạn mà không cần máy chủ FTP được lưu trữ trên web. Đây là một cái gì đó phổ biến cho hầu hết các bảng điều khiển nhưng đôi khi có nhãn khác nhau một chút. Ví dụ, hầu hết các máy chủ gọi nó là File Manager, nhưng DreamHost gọi nó là webFTP. Sử dụng Trình quản lý Tệp là

Cách Quản lý Người dùng với Quản lý Máy chủ Web - núm vú

Cách Quản lý Người dùng với Quản lý Máy chủ Web - núm vú

Cây thư mục riêng trên máy chủ nơi tập tin của nó được giữ. Là chủ sở hữu của máy chủ, bạn có quyền truy cập superuser cho toàn bộ máy chủ, có nghĩa là bạn có thể xem tất cả các tệp tin của chủ tài khoản khác. Tất cả các tập tin tài khoản được lưu giữ trong các thư mục bên trong một thư mục gọi là home, ...

Lựa chọn của người biên tập

Tạo một Cột trang web mới trong SharePoint 2010 - núm vú

Tạo một Cột trang web mới trong SharePoint 2010 - núm vú

SharePoint 2010 có một thực thể cột trang web cho phép bạn để sử dụng lại các cột trên nhiều danh sách. Khi bạn tạo một cột mới trong danh sách của mình, bạn tạo ra một cột danh sách - có nghĩa cột chỉ có thể được sử dụng trong danh sách đó. Các cột của trang web được tạo ở cấp cao nhất của trang web nhóm của bạn và có thể ...

Tạo Tuỳ chỉnh Chủ đề cho SharePoint 2010 Sử dụng PowerPoint - núm vú

Tạo Tuỳ chỉnh Chủ đề cho SharePoint 2010 Sử dụng PowerPoint - núm vú

Cho nhiều nhà thiết kế trang web và chủ sở hữu SharePoint 2010 , ý tưởng để có thể tùy chỉnh chủ đề của họ là rất thú vị. Mặt khác, nhiệm vụ chọn nhiều màu có thể có vẻ khó chịu với những người biết họ thích gì khi họ nhìn thấy nó nhưng gặp sự cố khi lựa chọn. Nếu bạn ở trong ...

Tạo trang web mới trong SharePoint 2010 - núm vú

Tạo trang web mới trong SharePoint 2010 - núm vú

Bạn có thể tạo một bộ sưu tập trang web mới trong SharePoint theo hai cách - bằng cách sử dụng Quản trị Trung tâm hoặc thông qua Tạo trang web Tự phục vụ. Sử dụng Quản trị Trung tâm đòi hỏi các quyền được cấp phép, thường là hạn chế đối với nhân viên CNTT. Tạo trang web tự tạo là một tính năng của SharePoint cho phép CNTT trao quyền cho việc tạo bộ sưu tập trang web mới ...