亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 5689 | 回復(fù): 15
打印 上一主題 下一主題

關(guān)于迷宮解謎 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2014-10-24 12:58 |只看該作者 |倒序?yàn)g覽
迷宮地圖如下,
五角星為起點(diǎn),正方形為終點(diǎn),起點(diǎn)和終點(diǎn)隨機(jī)生成。

需要制作一個(gè)自動(dòng)走迷宮的程序,有些疑問需要和大家探討

1.如何讀入并保存地圖模型,
2.如何遍歷每個(gè)房間

語言不限,主要是思路。。

論壇徽章:
6
丑牛
日期:2014-03-21 15:42:04子鼠
日期:2014-04-12 11:50:17處女座
日期:2014-09-01 09:25:1115-16賽季CBA聯(lián)賽之吉林
日期:2015-12-22 14:01:5215-16賽季CBA聯(lián)賽之廣東
日期:2016-03-08 18:49:422016科比退役紀(jì)念章
日期:2016-07-06 12:19:55
2 [報(bào)告]
發(fā)表于 2014-10-26 22:58 |只看該作者
這樣如何{:3_193:}
1.如何讀入并保存地圖模型,
按每個(gè)房間的開口的不同,用數(shù)字編號(hào)
將數(shù)字存入數(shù)組的數(shù)組作為地圖
2.如何遍歷每個(gè)房間
用深度/廣度優(yōu)先搜索方法, 基本模型是
  1. sub dfs { # 坐標(biāo)x,y
  2.     ... # 判斷邊界
  3.     for (i=1;i<=n;i++){ # 嘗試每一種可能
  4.         dfs($new_x,$new_y) # 繼續(xù)下一步
  5.     }
  6.     ... # 返回
  7. }
復(fù)制代碼

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2014-10-27 00:26 |只看該作者
到底是走迷宮還是遍歷所有房間?
這是兩個(gè)完全不同的問題。
如果是走迷宮,動(dòng)態(tài)規(guī)劃就可以。
如果是遍歷,就用樓上的算法。

論壇徽章:
8
技術(shù)圖書徽章
日期:2013-09-30 08:51:28技術(shù)圖書徽章
日期:2013-12-11 09:26:39白羊座
日期:2013-12-27 15:27:13金牛座
日期:2014-01-06 09:13:05天蝎座
日期:2014-01-21 14:23:28酉雞
日期:2014-05-09 16:51:12卯兔
日期:2014-08-11 16:49:1515-16賽季CBA聯(lián)賽之八一
日期:2017-08-14 23:24:57
4 [報(bào)告]
發(fā)表于 2014-10-27 10:49 |只看該作者

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2014-11-09 21:54 |只看該作者
回復(fù) 3# shimmey


動(dòng)態(tài)規(guī)劃?怎么理解?

論壇徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午馬
日期:2014-08-06 03:56:58
6 [報(bào)告]
發(fā)表于 2014-11-10 16:11 |只看該作者
大神,一點(diǎn)兒也不錯(cuò),這個(gè)問題引起了大家極大的興趣。
動(dòng)態(tài)規(guī)劃?怎么規(guī)劃?
想要知道這樣的腳本怎么寫?
謝謝 ~ {:2_172:}

回復(fù) 3# shimmey


   

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2014-11-13 05:34 |只看該作者
本帖最后由 shimmey 于 2014-11-14 14:12 編輯

可以照這個(gè)思路來做。
用L表示從起點(diǎn)走出的距離,從0開始,逐漸遞增。
L =0時(shí)表示在起點(diǎn)處。
L =1時(shí)表示在距離起點(diǎn)一格距離處,當(dāng)然,要能走到的位置。
依次類推,每一步都保存到起點(diǎn)的距離和路徑。
直到走到終點(diǎn)為止。
循環(huán)最多執(zhí)行的次數(shù)與方格的個(gè)數(shù)相同。
很久沒上網(wǎng)了,回復(fù)比較晚,不好意思!
代碼會(huì)在寫好之後放上來。

CS群:329355400
點(diǎn)擊鏈接加入群【Computer Science】:http://jq.qq.com/?_wv=1027&k=STufuA

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2014-11-17 12:33 |只看該作者
期待回復(fù) 7# shimmey


   

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2014-11-18 11:26 |只看該作者
  1. #!/usr/bin/perl

  2. #
  3. # Useage: maze.pl
  4. #
  5. #

  6. use strict;
  7. use warnings;

  8. ### main program

  9. my @maze;

  10. # maze structure 0->empty 1->wall
  11. # initialize
  12. for ( my $i = 0; $i <= 8; $i++ ) {
  13.     for ( my $j = 0; $j <= 9; $j++ ) {
  14.         $maze[$i][$j][0] = 0;
  15.         $maze[$i][$j][1] = 0;
  16.     }
  17. }

  18. $maze[0][1][0] = 1;
  19. $maze[0][3][0] = 1;
  20. $maze[0][3][1] = 1;
  21. $maze[0][4][1] = 1;
  22. $maze[0][5][1] = 1;
  23. $maze[0][6][0] = 1;
  24. $maze[0][8][0] = 1;
  25. $maze[0][8][1] = 1;
  26. $maze[0][9][1] = 1;

  27. $maze[1][0][0] = 1;
  28. $maze[1][0][1] = 1;
  29. $maze[1][1][1] = 1;
  30. $maze[1][2][1] = 1;
  31. $maze[1][3][1] = 1;
  32. $maze[1][4][0] = 1;
  33. $maze[1][5][0] = 1;
  34. $maze[1][7][0] = 1;
  35. $maze[1][8][0] = 1;
  36. $maze[1][9][0] = 1;
  37. $maze[1][9][1] = 1;

  38. $maze[2][0][1] = 1;
  39. $maze[2][2][0] = 1;
  40. $maze[2][3][0] = 1;
  41. $maze[2][3][1] = 1;
  42. $maze[2][4][0] = 1;
  43. $maze[2][5][1] = 1;
  44. $maze[2][7][0] = 1;
  45. $maze[2][8][0] = 1;
  46. $maze[2][9][0] = 1;
  47. $maze[2][9][1] = 1;

  48. $maze[3][0][1] = 1;
  49. $maze[3][2][0] = 1;
  50. $maze[3][2][1] = 1;
  51. $maze[3][3][1] = 1;
  52. $maze[3][4][1] = 1;
  53. $maze[3][6][0] = 1;
  54. $maze[3][7][0] = 1;
  55. $maze[3][8][0] = 1;
  56. $maze[3][9][0] = 1;
  57. $maze[3][9][1] = 1;

  58. $maze[4][0][0] = 1;
  59. $maze[4][1][1] = 1;
  60. $maze[4][2][1] = 1;
  61. $maze[4][3][1] = 1;
  62. $maze[4][4][0] = 1;
  63. $maze[4][5][0] = 1;
  64. $maze[4][9][1] = 1;

  65. $maze[5][0][1] = 1;
  66. $maze[5][2][0] = 1;
  67. $maze[5][3][0] = 1;
  68. $maze[5][6][1] = 1;
  69. $maze[5][7][1] = 1;
  70. $maze[5][8][0] = 1;
  71. $maze[5][8][1] = 1;
  72. $maze[5][9][1] = 1;

  73. $maze[6][1][1] = 1;
  74. $maze[6][2][0] = 1;
  75. $maze[6][4][1] = 1;
  76. $maze[6][5][1] = 1;
  77. $maze[6][6][0] = 1;
  78. $maze[6][6][1] = 1;
  79. $maze[6][7][1] = 1;
  80. $maze[6][8][0] = 1;
  81. $maze[6][9][1] = 1;

  82. $maze[7][0][1] = 1;
  83. $maze[7][1][0] = 1;
  84. $maze[7][1][1] = 1;
  85. $maze[7][3][1] = 1;
  86. $maze[7][4][1] = 1;
  87. $maze[7][5][0] = 1;
  88. $maze[7][5][1] = 1;
  89. $maze[7][7][1] = 1;

  90. $maze[8][1][1] = 1;
  91. $maze[8][2][1] = 1;
  92. $maze[8][3][1] = 1;
  93. $maze[8][5][1] = 1;
  94. $maze[8][6][1] = 1;
  95. $maze[8][7][0] = 1;
  96. $maze[8][7][1] = 1;
  97. $maze[8][8][1] = 1;
  98. $maze[8][9][1] = 1;

  99. my %T = (
  100.     0 => [ qw(┌ ─ ┐) ],
  101.     t => [ qw(┌ ┬ ┐) ],
  102.     m => [ qw(├ ┼ ┤) ],
  103.     b => [ qw(└ ┴ ┘) ],
  104.     h => '─', v => '│'
  105. );

  106. #output the maze
  107. # the first line
  108. print $T{'0'}[0];
  109. for (my $i = 0; $i<9; $i++) {
  110.    print $T{'0'}[1],$T{'0'}[1],  $T{'t'}[1];
  111. }
  112. print $T{'0'}[1], $T{'0'}[1], $T{'t'}[2],"\n";
  113. # crosses
  114. for (my $i = 0; $i<9; $i++) {
  115.     print $T{'v'};
  116.     for (my $j =0; $j<9; $j++) {
  117.         print "  ";
  118.         if ($maze[$i][$j][1] == 1) {
  119.             print $T{'v'};
  120.         } else {
  121.             print " ";
  122.         }
  123.     }
  124.     print "  ", $T{'v'}, "\n";
  125.     print $T{'m'}[0];
  126.     for (my $j =0; $j<9; $j++) {
  127.         if ($maze[$i][$j][0] == 1) {
  128.             print $T{'h'}, $T{'h'};
  129.         } else {
  130.             print "  ";
  131.         }
  132.         print $T{'m'}[1];
  133.     }
  134.     if ($maze[$i][9][0] == 1) {
  135.         print $T{'h'}, $T{'h'};
  136.     } else {
  137.         print "  ";
  138.     }
  139.     print $T{'m'}[2], "\n";
  140. }
  141. # the last row
  142. print $T{'v'};
  143. for (my $i=0; $i<9; $i++) {
  144.     print "  ";
  145.     if ($maze[$i][9][1] == 1) {
  146.         print $T{'v'};
  147.     } else {
  148.         print " ";
  149.     }
  150. }
  151. print "  ", $T{'v'}, "\n";
  152. print $T{'b'}[0];
  153. for (my $i=0; $i<9; $i++) {
  154.     print $T{'h'}, $T{'h'}, $T{'b'}[1];
  155. }
  156. print  $T{'h'}, $T{'h'}, $T{'b'}[2], "\n";
復(fù)制代碼
輸出迷宮,請(qǐng)檢查下有無錯(cuò)誤。
正在做後面的事情。

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2014-11-20 15:15 |只看該作者
本帖最后由 qw0148 于 2014-11-20 15:18 編輯

大神繼續(xù),你的代碼循環(huán)中多了幾個(gè)空格,我已經(jīng)幫你改過來了,請(qǐng)?jiān)谙旅娴幕A(chǔ)上繼續(xù).
期待后續(xù)大作

這是代碼結(jié)果:
  1.     #!/usr/bin/perl

  2.     #
  3.     # Useage: maze.pl
  4.     #
  5.     #

  6.     use strict;
  7.     use warnings;

  8.     ### main program

  9.     my @maze;

  10.     # maze structure 0->empty 1->wall
  11.     # initialize
  12.     for ( my $i = 0; $i <= 8; $i++ ) {
  13.         for ( my $j = 0; $j <= 9; $j++ ) {
  14.             $maze[$i][$j][0] = 0;
  15.             $maze[$i][$j][1] = 0;
  16.         }
  17.     }

  18.     $maze[0][1][0] = 1;
  19.     $maze[0][3][0] = 1;
  20.     $maze[0][3][1] = 1;
  21.     $maze[0][4][1] = 1;
  22.     $maze[0][5][1] = 1;
  23.     $maze[0][6][0] = 1;
  24.     $maze[0][8][0] = 1;
  25.     $maze[0][8][1] = 1;
  26.     $maze[0][9][1] = 1;

  27.     $maze[1][0][0] = 1;
  28.     $maze[1][0][1] = 1;
  29.     $maze[1][1][1] = 1;
  30.     $maze[1][2][1] = 1;
  31.     $maze[1][3][1] = 1;
  32.     $maze[1][4][0] = 1;
  33.     $maze[1][5][0] = 1;
  34.     $maze[1][7][0] = 1;
  35.     $maze[1][8][0] = 1;
  36.     $maze[1][9][0] = 1;
  37.     $maze[1][9][1] = 1;

  38.     $maze[2][0][1] = 1;
  39.     $maze[2][2][0] = 1;
  40.     $maze[2][3][0] = 1;
  41.     $maze[2][3][1] = 1;
  42.     $maze[2][4][0] = 1;
  43.     $maze[2][5][1] = 1;
  44.     $maze[2][7][0] = 1;
  45.     $maze[2][8][0] = 1;
  46.     $maze[2][9][0] = 1;
  47.     $maze[2][9][1] = 1;

  48.     $maze[3][0][1] = 1;
  49.     $maze[3][2][0] = 1;
  50.     $maze[3][2][1] = 1;
  51.     $maze[3][3][1] = 1;
  52.     $maze[3][4][1] = 1;
  53.     $maze[3][6][0] = 1;
  54.     $maze[3][7][0] = 1;
  55.     $maze[3][8][0] = 1;
  56.     $maze[3][9][0] = 1;
  57.     $maze[3][9][1] = 1;

  58.     $maze[4][0][0] = 1;
  59.     $maze[4][1][1] = 1;
  60.     $maze[4][2][1] = 1;
  61.     $maze[4][3][1] = 1;
  62.     $maze[4][4][0] = 1;
  63.     $maze[4][5][0] = 1;
  64.     $maze[4][9][1] = 1;

  65.     $maze[5][0][1] = 1;
  66.     $maze[5][2][0] = 1;
  67.     $maze[5][3][0] = 1;
  68.     $maze[5][6][1] = 1;
  69.     $maze[5][7][1] = 1;
  70.     $maze[5][8][0] = 1;
  71.     $maze[5][8][1] = 1;
  72.     $maze[5][9][1] = 1;

  73.     $maze[6][1][1] = 1;
  74.     $maze[6][2][0] = 1;
  75.     $maze[6][4][1] = 1;
  76.     $maze[6][5][1] = 1;
  77.     $maze[6][6][0] = 1;
  78.     $maze[6][6][1] = 1;
  79.     $maze[6][7][1] = 1;
  80.     $maze[6][8][0] = 1;
  81.     $maze[6][9][1] = 1;

  82.     $maze[7][0][1] = 1;
  83.     $maze[7][1][0] = 1;
  84.     $maze[7][1][1] = 1;
  85.     $maze[7][3][1] = 1;
  86.     $maze[7][4][1] = 1;
  87.     $maze[7][5][0] = 1;
  88.     $maze[7][5][1] = 1;
  89.     $maze[7][7][1] = 1;

  90.     $maze[8][1][1] = 1;
  91.     $maze[8][2][1] = 1;
  92.     $maze[8][3][1] = 1;
  93.     $maze[8][5][1] = 1;
  94.     $maze[8][6][1] = 1;
  95.     $maze[8][7][0] = 1;
  96.     $maze[8][7][1] = 1;
  97.     $maze[8][8][1] = 1;
  98.     $maze[8][9][1] = 1;

  99.     my %T = (
  100.         0 => [ qw(┌ ─ ┐) ],
  101.         t => [ qw(┌ ┬ ┐) ],
  102.         m => [ qw(├ ┼ ┤) ],
  103.         b => [ qw(└ ┴ ┘) ],
  104.         h => '─',
  105.                 v => '│'
  106.     );

  107.     #output the maze
  108.     # the first line
  109.     print $T{'0'}[0];
  110.     for (my $i = 0; $i<9; $i++) {
  111.        print $T{'0'}[1],$T{'t'}[1];
  112.     }
  113.     print $T{'0'}[1],$T{'t'}[2],"\n";
  114.     # crosses
  115.     for (my $i = 0; $i<9; $i++) {
  116.         print $T{'v'};
  117.         for (my $j =0; $j<9; $j++) {
  118.             print "  ";
  119.             if ($maze[$i][$j][1] == 1) {
  120.                 print $T{'v'};
  121.             } else {
  122.                 print "  ";
  123.             }
  124.         }
  125.         print "  $T{'v'}\n";
  126.         print $T{'m'}[0];
  127.         for (my $j =0; $j<9; $j++) {
  128.             if ($maze[$i][$j][0] == 1) {
  129.                 print $T{'h'};
  130.             } else {
  131.                 print "  ";
  132.             }
  133.             print $T{'m'}[1];
  134.         }
  135.         if ($maze[$i][9][0] == 1) {
  136.             print $T{'h'};
  137.         } else {
  138.             print "  ";
  139.         }
  140.         print $T{'m'}[2], "\n";
  141.     }
  142.     # the last row
  143.     print $T{'v'};
  144.     for (my $i=0; $i<9; $i++) {
  145.         print "  ";
  146.         if ($maze[$i][9][1] == 1) {
  147.             print $T{'v'};
  148.         } else {
  149.             print "  ";
  150.         }
  151.     }
  152.     print "  ", $T{'v'}, "\n";
  153.     print $T{'b'}[0];
  154.     for (my $i=0; $i<9; $i++) {
  155.         print $T{'h'},$T{'b'}[1];
  156.     }
  157.     print  $T{'h'},$T{'b'}[2], "\n";
復(fù)制代碼
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP