- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在寻找解决此问题的方法,您必须使用 L 形三 block 拼贴 block 填充 n*m (n, m <=8) block 矩阵。瓷砖不能以任何方式相互重叠。
我不一定要寻找完整的答案,只是关于如何处理它的提示。
nguồn:https://cses.fi/dt/task/336
1 Câu trả lời
我解决了这个 graph problemsử dụng recursive backtracking算法加 memoization .我的解决方案不是特别快,需要一分钟左右的时间来解决 9x12 网格,但对于您问题中的 8x8 网格应该足够了(在 9x9 上大约需要一秒钟)。 7x7 和 8x8 网格没有解决方案,因为它们不能被 triomino 大小 3 整除。
策略是从网格的一个角落开始,逐个单元格地移动,尝试在合法的情况下放置每个 block ,从而有条不紊地探索解决方案空间。
如果方 block 的放置是合法的,但在网格中产生了无法填充的气穴,则移除方 block ;我们提前知道这种状态没有解决方案,可以放弃探索它的 child 。例如,在 3x6 网格上,
abb.c.
aabcc.
......
无可救药。
一旦达到所有单元格都已填充的状态,我们就可以向其父状态报告 1 个解决方案的计数。下面是已求解的 3x6 网格的示例:
aaccee
abcdef
bbddff
如果每个可能的 block 都已放置在某个位置,则回溯,沿途向父状态报告解决方案计数并探索尚未探索的任何状态。
就内存而言,如果存在某种排列的图 block 使得它们覆盖完全相同的坐标,则将任意两个网格状态称为等效的。例如:
aacc..
abdc..
bbdd..
Và
aacc..
bacd..
bbdd..
被认为是等效的,即使这两个状态是通过不同的图 block 放置达到的。两种状态具有相同的子结构,因此计算一种状态的解的数量就足够了;将其添加到备忘录中,如果我们再次达到该状态,我们可以简单地报告备忘录中的解决方案数量,而不是重新计算所有内容。
我的程序在 3x6 网格上报告 8 个解决方案:
正如我提到的,我的 Python 解决方案既不快速也不优化。可以在不到一秒的时间内解决 9x12 网格。除了大的优化,我在实现中忽略了一些基本的东西。例如,我为每个瓷砖放置复制了整个网格;在单个网格上添加/删除图 block 本来是一个简单的改进。我也没有检查网格中无法解决的间隙,这可以在动画中看到。
解决问题后,一定要四处寻找人们提出的一些令人兴奋的解决方案。我不想放弃更多!
关于algorithm - 使用递归编程用 L 形三 block 瓷砖填充 n*m block 矩阵的方法数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54051133/
Tôi có đoạn mã sau trong tệp blockly.js của mình Blockly.Blocks['account_number'] = { // Kiểu khác. init: function() {
Trước hết xin lỗi vì tiếng Anh của tôi không tốt, tôi đang phát triển ứng dụng Image Splitter và đã hoàn thành, nhưng bây giờ yêu cầu là khi hình ảnh được chia (chia thành nhiều khối/phần) thì mỗi khối (ch
#value: Giá trị trả về của tin nhắn. Khi được gửi đến một khối, đó là giá trị của câu cuối cùng trong khối. Vì vậy giá trị [ 1 + 2.3 + 4. ] được tính là 7. Đôi khi tôi thấy khó sử dụng. Có cách nào để làm cho nó rõ ràng hơn không?
Tôi đang cố gắng xây dựng một thanh điều hướng phản hồi bao gồm 3 div có cùng chiều rộng và chiều cao. Tôi đã áp dụng inline-block cho từng khối và tôi nhận được một hành vi mà tôi không hiểu. Vấn đề là khối thứ ba bao gồm 2
Tôi muốn sử dụng Blockly để cho phép người dùng không chuyên môn có thể chỉ định các tập lệnh thử nghiệm. Một phần của nó yêu cầu trình chọn tệp, tuy nhiên, tôi không thấy Blockly có trình chọn tệp. Vâng? Trên thực tế, tôi không thể tìm thấy danh sách đầy đủ các khối chuẩn. Ai có trang web này?
Thuộc tính props.isSelected của khối cha chỉ đúng khi bạn ở bên trong khối cha, nhưng không đúng khi bạn đang chỉnh sửa bên trong innerBlocks của khối đó. Làm thế nào để lấy từ khối cha mẹ
Thuộc tính props.isSelected của khối cha chỉ đúng khi bạn ở bên trong khối cha, nhưng không đúng khi bạn đang chỉnh sửa bên trong innerBlocks của khối đó. Làm thế nào để lấy từ khối cha mẹ
Tôi muốn tạo một khối thanh điều hướng với khối màu nền khác nhau và khối màu khi di chuột qua khác nhau. Tôi có thể tạo riêng một khối màu khi di chuột hoặc một khối màu nền khác, nhưng không thể tạo cả hai cùng lúc. Vậy xin hãy cho tôi biết làm thế nào
Tôi đang sử dụng mã được thấy ở đây để thực thi mã định kỳ: #define DELAY_IN_MS 1000 __block dispatch_time_t next = dispatch_time(DISPATC
Tại sao phải sao chép khối thay vì giữ nguyên? Sự khác biệt giữa hai loại này là gì? Trong trường hợp nào (nếu có) thì việc sao chép một khối là không hợp lý? Câu trả lời hay nhất Thông thường, khi bạn phân bổ một thể hiện của một lớp, nó sẽ nằm trong heap và tồn tại ở đó cho đến khi được giải phóng. Nhưng,
Tôi đang cố gắng tìm hiểu xem mình có làm đúng không: Nếu tôi có một khối, tôi làm thế này: __weak MyClass *weakSelf = self; [self performBlock:^{
Tôi muốn tạo một menu điều hướng gồm 4 khối, trong khi tôi có một khối hiển thị, sau đó nhấp để mở khối thứ hai, chọn khối thứ hai và nhấp lại thì khối thứ ba sẽ xuất hiện, tương tự với khối thứ tư... Đây là
Ví dụ, điều này có tốt hơn không? thử { đồng bộ (bean) { // Viết cái gì đó } } bắt (Int
Tôi muốn con rùa kiểm tra màu sắc của một mảng nhỏ ở phía trước nó và quyết định nên di chuyển đến đâu. Nếu mảng phía trước không phải màu trắng thì con rùa sẽ quay lại và di chuyển sang trái hoặc phải. Tôi đang gặp lỗi trong cấu trúc quyết định If của mình với nội dung "Mong đợi TRUE ở đây? FALSE thay vì danh sách chặn
Tôi muốn tạo một ma trận đường chéo khối trong đó các khối đường chéo được lặp lại một số lần nhất định và các khối ngoài đường chéo đều là ma trận số không. Ví dụ, giả sử chúng ta bắt đầu với một ma trận: > diag.matrix [,1] [,2] [
Tôi mới biết đến blockchain. Đột nhiên tôi có một câu hỏi, liệu chúng ta có thể truy cập dữ liệu khối trước đó trên chuỗi khối Ethereum thông qua số khối không. Ví dụ, tôi đã tạo block1 và block2. khối
Tôi mới biết đến blockchain. Đột nhiên tôi có một câu hỏi, liệu chúng ta có thể truy cập dữ liệu khối trước đó trên chuỗi khối Ethereum thông qua số khối không. Ví dụ, tôi đã tạo block1 và block2. khối
Tôi đã tạo ra một môi trường đẳng cự, tất cả đều sử dụng Javascript và HTML5 (2D Canvas) và hầu hết đều hoạt động tốt. Vấn đề tôi đang gặp phải là sử dụng các khối có chiều cao khác nhau rồi lập chỉ mục cho các đối tượng trên các khối đó.
Đây là đoạn mã khiến tôi bối rối: public Integer getInteger(BlockingQueue queue) { boolean interruption = false; try
Tôi có một ứng dụng dựa trên TPL Dataflow hoạt động tốt khi chỉ sử dụng khối lệnh và khối hành động. Tôi đã thêm TransformBlock để thử chuyển đổi từ nguồn trước khi xuất bản lên khối hàng loạt
Tôi là một lập trình viên xuất sắc, rất giỏi!