{"id":3882,"date":"2019-10-03T13:06:35","date_gmt":"2019-10-03T05:06:35","guid":{"rendered":"https:\/\/damogame.cn\/wordpress\/?p=3882"},"modified":"2021-08-22T16:58:13","modified_gmt":"2021-08-22T08:58:13","slug":"%e5%85%ab%e7%9a%87%e5%90%8e%e9%97%ae%e9%a2%98%e8%a7%a3%e7%ad%94","status":"publish","type":"post","link":"https:\/\/i007.cc\/wordpress\/archives\/3882","title":{"rendered":"\u516b\u7687\u540e\u95ee\u9898\u89e3\u7b54"},"content":{"rendered":"<p>\u4e4b\u524d\u7684\u89e3\u6cd5\u662f\u51e0\u5e74\u524d\u7684\uff0c\u52c9\u52c9\u5f3a\u5f3a\u80fd\u505a\u51fa\u6765\uff0c\u7edd\u5bf9\u7b97\u4e0d\u4e0a\u4f18\u96c5\uff0c\u5982\u4eca\u91cd\u505a\u4e86\uff0c\u8fd9\u662f\u7b2c\u4e8c\u7248<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">#include &lt;iostream&gt;\r\n#include &lt;vector&gt;\r\n\r\nclass Solution {\r\npublic:\r\n    std::vector&lt;std::vector&lt;int&gt;&gt; getResult() {\r\n        std::vector&lt;std::vector&lt;int&gt;&gt; result;\r\n\r\n        std::vector&lt;int&gt; cur;\r\n        dfs(result, 8, cur);\r\n        return result;\r\n    }\r\n\r\nprivate:\r\n    bool can_place(int target, const std::vector&lt;int&gt;&amp; cur, int col) {\r\n        std::vector&lt;std::vector&lt;bool&gt;&gt; matrix;\r\n        for (int i = 0; i &lt; target; i++) {\r\n            matrix.push_back(std::vector&lt;bool&gt;(target, false));\r\n        }\r\n\r\n        for (int row = 0; row &lt; cur.size(); row++) {\r\n            int col = cur[row];\r\n            for (int i = 0; i &lt; target; i++) {\r\n                matrix[row][i] = true;\r\n                matrix[i][col] = true;\r\n                int new_val = row + col - i;\r\n                if (new_val &gt;= 0 &amp;&amp; new_val &lt; target)\r\n                    matrix[i][new_val] = true;\r\n                new_val = i - row + col;\r\n                if (new_val &gt;= 0 &amp;&amp; new_val &lt; target)\r\n                    matrix[i][new_val] = true;\r\n            }\r\n        }\r\n\r\n        return !matrix[cur.size()][col];\r\n    }\r\n\r\n    void dfs(std::vector&lt;std::vector&lt;int&gt;&gt;&amp; result, int target, const std::vector&lt;int&gt;&amp; cur) {\r\n        if (cur.size() == target) {\r\n            result.push_back(cur);\r\n            return;\r\n        }\r\n\r\n        for (int col = 0; col &lt; target; col++) {\r\n            auto new_cur = cur;\r\n            if (!can_place(target, cur, col))\r\n                continue;\r\n\r\n            new_cur.push_back(col);\r\n            dfs(result, target, new_cur);\r\n        }\r\n    }\r\n};\r\n\r\nint main() {\r\n    auto result = Solution().getResult();\r\n    for (int i = 0; i &lt; result.size(); i++) {\r\n        std::cout &lt;&lt; std::endl;\r\n        for (int j = 0; j &lt; result[i].size(); j++) {\r\n            std::cout &lt;&lt; result[i][j] &lt;&lt; \" \";\r\n        }\r\n    }\r\n    return 0;\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>\u7b2c\u4e09\u7248\u51fa\u6765\u4e86<\/p>\n<p>\u7b2c\u4e09\u7248\u7528\u4e86\u4e2a\u7f13\u5b58matrix\uff0c\u901f\u5ea6\u4f1a\u6bd4\u7b2c\u4e8c\u79cd\u5feb<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">#include &lt;iostream&gt;\r\n#include &lt;vector&gt;\r\n\r\nclass Solution {\r\npublic:\r\n    std::vector&lt;std::vector&lt;int&gt;&gt; get_result() {\r\n        std::vector&lt;std::vector&lt;int&gt;&gt; result;\r\n\r\n        std::vector&lt;int&gt; cur;\r\n        dfs(result, 8, cur);\r\n        return result;\r\n    }\r\n\r\nprivate:\r\n    std::vector&lt;std::vector&lt;bool&gt;&gt; create_matrix(int target, const std::vector&lt;int&gt;&amp; cur) {\r\n        auto tmp_row = std::vector&lt;bool&gt;(target, false);\r\n        std::vector&lt;std::vector&lt;bool&gt;&gt; matrix(target, tmp_row);\r\n        for (int row = 0; row &lt; cur.size(); row++) {\r\n            const int col = cur[row];\r\n            for (int i = 0; i &lt; target; i++) {\r\n                matrix[i][col] = true;\r\n                matrix[row][i] = true;\r\n\r\n                if (col + row - i &gt;= 0 &amp;&amp; col + row - i &lt; target)\r\n                    matrix[i][col + row - i] = true;\r\n                if (col - row + i &gt;= 0 &amp;&amp; col - row + i &lt; target)\r\n                    matrix[i][col - row + i] = true;\r\n            }\r\n        }\r\n        return matrix;\r\n    }\r\n\r\n    void dfs(std::vector&lt;std::vector&lt;int&gt;&gt;&amp; result, int target, const std::vector&lt;int&gt;&amp; cur) {\r\n        if (cur.size() == target) {\r\n            result.push_back(cur);\r\n            return;\r\n        }\r\n\r\n        auto matrix = create_matrix(target, cur);\r\n        for (int col = 0; col &lt; target; col++) {\r\n            if (matrix[cur.size()][col])\r\n                continue;\r\n            auto new_cur = cur;\r\n            new_cur.push_back(col);\r\n            dfs(result, target, new_cur);\r\n        }\r\n    }\r\n};\r\n\r\nint main() {\r\n    auto result = Solution().get_result();\r\n    std::cout &lt;&lt; \"result count: \" &lt;&lt; result.size() &lt;&lt; std::endl;\r\n    for (int i = 0; i &lt; result.size(); i++) {\r\n        std::cout &lt;&lt; std::endl;\r\n        for (int j = 0; j &lt; result[i].size(); j++) {\r\n            std::cout &lt;&lt; result[i][j] &lt;&lt; \" \";\r\n        }\r\n    }\r\n    return 0;\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4e4b\u524d\u7684\u89e3\u6cd5\u662f\u51e0\u5e74\u524d\u7684\uff0c\u52c9\u52c9\u5f3a\u5f3a\u80fd\u505a\u51fa\u6765\uff0c<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[],"tags":[120],"class_list":["post-3882","post","type-post","status-publish","format-standard","hentry","tag-04-"],"_links":{"self":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/3882","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/comments?post=3882"}],"version-history":[{"count":0,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/3882\/revisions"}],"wp:attachment":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/media?parent=3882"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/categories?post=3882"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/tags?post=3882"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}