{"id":364,"date":"2011-08-07T14:51:00","date_gmt":"2011-08-07T06:51:00","guid":{"rendered":"http:\/\/wangkaixuan.tech\/?p=364"},"modified":"2020-06-06T14:52:33","modified_gmt":"2020-06-06T06:52:33","slug":"%e8%ae%a1%e7%ae%97%e6%9c%ba%e8%b5%b0%e8%bf%b7%e5%ae%ab-c%e6%ba%90%e7%a0%81","status":"publish","type":"post","link":"http:\/\/www.wangkaixuan.tech\/?p=364","title":{"rendered":"\u8ba1\u7b97\u673a\u8d70\u8ff7\u5bab C\u6e90\u7801"},"content":{"rendered":"\n<pre class=\"wp-block-code\"><code>\/*\n \u8fd9\u4e2a\u4e5f\u662f\u5927\u4e00\u4e0b\u5b66\u671f\u5199\u7684\n \u5f53\u65f6\u4e0d\u592a\u4f1a\u7528\u7ed3\u6784\u4f53\n \u6240\u4ee5\u4ee3\u7801\u663e\u5f97\u6bd4\u8f83weak\u3002\u3002\u3002\n \u540e\u6765\u8bf4\u8981\u505a\u4e2a\u6539\u8fdb\n \u4e00\u76f4\u4e5f\u6ca1\u6709\u4ed8\u8bf8\u5b9e\u65bd\n *\/\n#include&lt;stdio.h>\n#include&lt;string.h>\n\nint x&#91;1000], y&#91;1000], p&#91;1000], m&#91;1000], n&#91;1000], *topm, *topn, *topx, *topy,\n\t\t*topp, *basem, *basen, *basex, *basey, *basep;\nint l, r;\nchar a&#91;100]&#91;100];\n\nvoid Initstackx()\n{\n\ttopx = basex = x;\n}\nvoid Initstacky()\n{\n\ttopy = basey = y;\n}\nvoid Initstackp()\n{\n\ttopp = basep = p;\n}\n\nvoid Initstackm()\n{\n\ttopm = basem = m;\n}\nvoid Initstackn()\n{\n\ttopn = basen = n;\n}\n\nint stackemptyx()\n{\n\tif (topx == basex)\n\t\treturn (1);\n\telse\n\t\treturn (0);\n}\nint stackemptyy()\n{\n\tif (topy == basey)\n\t\treturn (1);\n\telse\n\t\treturn (0);\n}\nint stackemptyp()\n{\n\tif (topp == basep)\n\t\treturn (1);\n\telse\n\t\treturn (0);\n}\n\nint* gettopx()\n{\n\treturn (topx);\n}\nint* gettopy()\n{\n\treturn (topy);\n}\nint* gettopp()\n{\n\treturn (topp);\n}\n\nint* popx()\n{\n\ttopx--;\n\treturn (topx + 1);\n}\nint* popy()\n{\n\ttopy--;\n\treturn (topy + 1);\n}\nint* popp()\n{\n\ttopp--;\n\treturn (topp + 1);\n}\n\nvoid pushx(int pos)\n{\n\ttopx++;\n\t*topx = pos;\n}\nvoid pushy(int pos)\n{\n\ttopy++;\n\t*topy = pos;\n}\nvoid pushp(int pos)\n{\n\ttopp++;\n\t*topp = pos;\n}\n\nvoid pushm(int pos)\n{\n\ttopm++;\n\t*topm = pos;                                                         \/\/\n}\nvoid pushn(int pos)\n{\n\ttopn++;\n\t*topn = pos;\n}\n\nint check(int i, int j)\n{\n\tint *p1, *p2;\n\tp1 = basem + 1;\n\tp2 = basen + 1;\n\twhile (p1 &lt;= topm)\n\t{\n\t\tif (*p1 == i &amp;&amp; *p2 == j)\n\t\t\treturn (1);\n\t\telse\n\t\t{\n\t\t\tp1++;\n\t\t\tp2++;\n\t\t}\n\t}\n\treturn (0);\n}\nint rout(int i, int j, int pos)\n{\n\tswitch (pos)\n\t{\n\tcase 0:\n\t\tif (a&#91;i]&#91;j + 1] != '#' &amp;&amp; j + 1 &lt; l &amp;&amp; check(i, j + 1) != 1)\n\t\t\treturn (1);\n\t\telse if (a&#91;i + 1]&#91;j] != '#' &amp;&amp; i + 1 &lt; r &amp;&amp; check(i + 1, j) != 1)\n\t\t\treturn (2);\n\t\telse if (a&#91;i]&#91;j - 1] != '#' &amp;&amp; j - 1 >= 0 &amp;&amp; check(i, j - 1) != 1)\n\t\t\treturn (3);\n\t\telse if (a&#91;i - 1]&#91;j] != '#' &amp;&amp; i - 1 >= 0 &amp;&amp; check(i - 1, j) != 1)\n\t\t\treturn (4);\n\t\telse\n\t\t\treturn (0);\n\tcase 1:\n\t\tif (a&#91;i + 1]&#91;j] != '#' &amp;&amp; i + 1 &lt; r &amp;&amp; check(i + 1, j) != 1)\n\t\t\treturn (2);\n\t\telse if (a&#91;i]&#91;j - 1] != '#' &amp;&amp; j - 1 >= 0 &amp;&amp; check(i, j - 1) != 1)\n\t\t\treturn (3);\n\t\telse if (a&#91;i - 1]&#91;j] != '#' &amp;&amp; i - 1 >= 0 &amp;&amp; check(i - 1, j) != 1)\n\t\t\treturn (4);\n\t\telse\n\t\t\treturn (0);\n\tcase 2:\n\t\tif (a&#91;i]&#91;j + 1] != '#' &amp;&amp; j + 1 &lt; l &amp;&amp; check(i, j + 1) != 1)\n\t\t\treturn (1);\n\t\telse if (a&#91;i]&#91;j - 1] != '#' &amp;&amp; j - 1 >= 0 &amp;&amp; check(i, j - 1) != 1)\n\t\t\treturn (3);\n\t\telse if (a&#91;i - 1]&#91;j] != '#' &amp;&amp; i - 1 >= 0 &amp;&amp; check(i - 1, j) != 1)\n\t\t\treturn (4);\n\t\telse\n\t\t\treturn (0);\n\tcase 3:\n\t\tif (a&#91;i]&#91;j + 1] != '#' &amp;&amp; j + 1 &lt; l &amp;&amp; check(i, j + 1) != 1)\n\t\t\treturn (1);\n\t\telse if (a&#91;i + 1]&#91;j] != '#' &amp;&amp; i + 1 &lt; r &amp;&amp; check(i + 1, j) != 1)\n\t\t\treturn (2);\n\t\telse if (a&#91;i - 1]&#91;j] != '#' &amp;&amp; i - 1 >= 0 &amp;&amp; check(i - 1, j) != 1)\n\t\t\treturn (4);\n\t\telse\n\t\t\treturn (0);\n\tcase 4:\n\t\tif (a&#91;i]&#91;j + 1] != '#' &amp;&amp; j + 1 &lt; l &amp;&amp; check(i, j + 1) != 1)\n\t\t\treturn (1);\n\t\telse if (a&#91;i + 1]&#91;j] != '#' &amp;&amp; i + 1 &lt; r &amp;&amp; check(i + 1, j) != 1)\n\t\t\treturn (2);\n\t\telse if (a&#91;i]&#91;j - 1] != '#' &amp;&amp; j - 1 >= 0 &amp;&amp; check(i, j - 1) != 1)\n\t\t\treturn (3);\n\t\telse\n\t\t\treturn (0);\n\t}\n}\n\nint main()\n{\n\tputs(\n\t\t\t\"**********************************************************************\");\n\tputs(\n\t\t\t\"*                                                                    *\");\n\tputs(\"*                \u8d70              \u8ff7             \u5bab                   *\");\n\tputs(\n\t\t\t\"*                                                                    *\");\n\tputs(\"*                       \u8f6f\u4ef62\u73ed      \u738b\u51ef\u65cb                          *\");\n\tputs(\n\t\t\t\"**********************************************************************\\n\\n\");\n\tputs(\"\u8bf4\u660e\uff1a1 . \u4ee5'#'\u4ee3\u8868\u5899\uff0c\u7a7a\u683c\u4ee3\u8868\u53ef\u8d70\u533a\u57df\");\n\tputs(\"      2 . \u53ef\u8d70\u4efb\u610f\u9636\u8ff7\u5bab\uff0c'CTRL + Z'\u4ee3\u8868\u8f93\u5165\u7ed3\u675f\");\n\tputs(\"      3 . \u4e0d\u5fc5\u8f93\u5165\u8fb9\u6846\");\n\tint i, j, t;\n\tbegin: Initstackx();\n\tInitstacky();\n\tInitstackp();\n\tInitstackm();\n\tInitstackn();\n\tgets(a&#91;0]);\n\tif ((l = strlen(a&#91;0])) == 0)\n\t{\n\t\tprintf(\"\u60a8\u6ca1\u6709\u8f93\u5165\u8ff7\u5bab\\n\u8bf7\u8f93\u5165\u8ff7\u5bab\uff1a\\n\");\n\t\tgoto begin;\n\t}\n\tr = 1;\n\twhile (gets(a&#91;r]))\n\t\tr++;                              \/\/\u5f97\u5230\u8ff7\u5bab\n\ti = 0;\n\tj = 0;\n\twhile (1)\n\t{\n\t\tpushm(i);\n\t\tpushn(j);\n\t\tif (i == r - 1 &amp;&amp; j == l - 1)\n\t\t{                          \/\/\u5230\u51fa\u53e3\u4f4d\u7f6e\u8df3\u51fa\n\t\t\tif (a&#91;i]&#91;j] == '#')\n\t\t\t\tgoto out;\n\t\t\telse\n\t\t\t\tgoto output;\n\t\t}\n\t\tif ((t = rout(i, j, 0)) > 0)                        \/\/\u5f53\u524d\u4f4d\u7f6e\u53ef\u901a     t\u4e3a\u53ef\u901a\u65b9\u5411\n\t\t{\n\t\t\tpushx(i);\n\t\t\tpushy(j);\n\t\t\tpushp(t);                                    \/\/\u8def\u5f84\u8fdb\u6808\n\t\t\tswitch (t)\n\t\t\t\/\/\u5207\u6362\u4e0b\u4e00\u4e2a\u4f4d\u7f6e\u4e3a\u5f53\u524d\u4f4d\u7f6e\n\t\t\t{\n\t\t\tcase 1:\n\t\t\t\tj++;\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\ti++;\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tj--;\n\t\t\t\tbreak;\n\t\t\tcase 4:\n\t\t\t\ti--;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\telse                                            \/\/\u5f53\u524d\u4f4d\u7f6e\u4e0d\u53ef\u901a\n\t\t{\n\t\t\tif ((!stackemptyx())\n\t\t\t\t\t&amp;&amp; ((t = rout(*gettopx(), *gettopy(), *gettopp()) > 0))) \/\/\u6808\u4e0d\u7a7a\u4e14\u4e0a\u4e00\u4e2a\u4f4d\u7f6e\u8fd8\u6709\u5176\u4ed6\u8def\u5f84\u53ef\u8d70\n\t\t\t{\n\t\t\t\tpopp();\n\t\t\t\tpushp(t);                         \/\/\u538b\u5165\u65b0\u4f4d\u7f6e\n\t\t\t\tswitch (t)\n\t\t\t\t\/\/\u5207\u6362\u5230\u4e0b\u4e00\u4e2a\u5f53\u524d\u4f4d\u7f6e\n\t\t\t\t{\n\t\t\t\tcase 1:\n\t\t\t\t\tj++;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\ti++;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tj--;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\ti--;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\twhile ((!stackemptyx())\n\t\t\t\t\t\t&amp;&amp; ((t = rout(*gettopx(), *gettopy(), *gettopp())) == 0)) \/\/\u5f53\u6808\u4e0d\u7a7a\u4e14\u5f53\u524d\u4f4d\u7f6e\u65e0\u5176\u4ed6\u8def\u53ef\u8d70\n\t\t\t\t{\n\t\t\t\t\tpopx();\n\t\t\t\t\tpopy();\n\t\t\t\t\tpopp();\n\t\t\t\t\ti = *gettopx();\n\t\t\t\t\tj = *gettopy();\n\t\t\t\t}                          \/\/\u5f39\u51fa\u5f53\u524d\u4f4d\u7f6e\n\t\t\t\tif (stackemptyx())               \/\/\u82e5\u6808\u7a7a\uff0c\u8df3\u51fa\n\t\t\t\t\tgoto out;\n\t\t\t\telse                               \/\/\u5426\u5219\u5207\u6362\u4e0b\u4e00\u4e2a\u5f53\u524d\u4f4d\u7f6e\n\t\t\t\t{\n\t\t\t\t\tpopp();\n\t\t\t\t\tpushp(t);                        \/\/\u538b\u5165\u65b0\u4f4d\u7f6e\n\t\t\t\t\tswitch (t)\n\t\t\t\t\t\/\/\u5207\u6362\u5230\u4e0b\u4e00\u4e2a\u5f53\u524d\u4f4d\u7f6e\n\t\t\t\t\t{\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tj++;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\ti++;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tj--;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\ti--;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tout: if (stackemptyx())\n\t{\n\t\tputs(\"No solution!\\n\");\n\t\tgoto begin;\n\t}\n\toutput: putchar(10);\n\twhile (!stackemptyx())\n\t{\n\t\ta&#91;*popx()]&#91;*popy()] = '.';\n\t}\n\ta&#91;r - 1]&#91;l - 1] = '.';\n\tfor (i = 0; i &lt; l + 2; i++)\n\t\tprintf(\"0\");\n\tprintf(\"\\n\");\n\tfor (i = 0; i &lt; r; i++)\n\t{\n\t\tprintf(\"0\");\n\t\tfor (j = 0; j &lt; l; j++)\n\t\t\tprintf(\"%c\", a&#91;i]&#91;j]);\n\t\tprintf(\"0\\n\");\n\t}\n\tfor (i = 0; i &lt; l + 2; i++)\n\t\tprintf(\"0\");\n\tprintf(\"\\n\");\n\tgoto begin;\n}\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"class_list":["post-364","post","type-post","status-publish","format-standard","hentry","category-06-03-play-ground"],"_links":{"self":[{"href":"http:\/\/www.wangkaixuan.tech\/index.php?rest_route=\/wp\/v2\/posts\/364","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.wangkaixuan.tech\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.wangkaixuan.tech\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.wangkaixuan.tech\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.wangkaixuan.tech\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=364"}],"version-history":[{"count":0,"href":"http:\/\/www.wangkaixuan.tech\/index.php?rest_route=\/wp\/v2\/posts\/364\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.wangkaixuan.tech\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=364"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.wangkaixuan.tech\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=364"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.wangkaixuan.tech\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=364"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}