免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發新帖
樓主: sunzhiguolu
打印 上一主題 下一主題

小學一年級數學題 - 系列-3 [復制鏈接]

論壇徽章:
307
程序設計版塊每周發帖之星
日期:2016-04-08 00:41:33操作系統版塊每日發帖之星
日期:2015-09-02 06:20:00每日論壇發貼之星
日期:2015-09-02 06:20:00程序設計版塊每日發帖之星
日期:2015-09-04 06:20:00每日論壇發貼之星
日期:2015-09-04 06:20:00每周論壇發貼之星
日期:2015-09-06 22:22:00程序設計版塊每日發帖之星
日期:2015-09-09 06:20:00程序設計版塊每日發帖之星
日期:2015-09-19 06:20:00程序設計版塊每日發帖之星
日期:2015-09-20 06:20:00每日論壇發貼之星
日期:2015-09-20 06:20:00程序設計版塊每日發帖之星
日期:2015-09-22 06:20:00程序設計版塊每日發帖之星
日期:2015-09-24 06:20:00
21 [報告]
發表于 2017-06-28 22:05 |只看該作者
本帖最后由 sunzhiguolu 于 2017-06-28 22:08 編輯

回復 20# 523066680
大神 能否用 7 樓的代碼作為示例進行講解,我想通過實際案例 加上大神通俗易懂的描述 對代碼的理解會更清楚些。謝謝。
不急,您將語言好好組織一下。
另外,前面我說了。如果我能夠從中受益 (學到知識, 積分不是問題 可以商量)。辛苦了。

論壇徽章:
12
子鼠
日期:2014-10-11 16:46:482016科比退役紀念章
日期:2018-03-16 10:24:0515-16賽季CBA聯賽之山東
日期:2017-11-10 14:32:142016科比退役紀念章
日期:2017-09-02 15:42:4715-16賽季CBA聯賽之佛山
日期:2017-08-28 17:11:5515-16賽季CBA聯賽之浙江
日期:2017-08-24 16:55:1715-16賽季CBA聯賽之青島
日期:2017-08-17 19:55:2415-16賽季CBA聯賽之天津
日期:2017-06-29 10:34:4315-16賽季CBA聯賽之四川
日期:2017-05-16 16:38:55黑曼巴
日期:2016-07-19 15:03:112015亞冠之薩濟拖拉機
日期:2015-05-22 11:38:5315-16賽季CBA聯賽之北京
日期:2019-08-13 17:30:53
22 [報告]
發表于 2017-06-28 22:12 |只看該作者
回復 21# sunzhiguolu

我就是用他的代碼改了函數名、拆了兩部分出來而已啊
少年,你的基礎 ……  

我也不求積分,覺得你需要好好看書。

論壇徽章:
307
程序設計版塊每周發帖之星
日期:2016-04-08 00:41:33操作系統版塊每日發帖之星
日期:2015-09-02 06:20:00每日論壇發貼之星
日期:2015-09-02 06:20:00程序設計版塊每日發帖之星
日期:2015-09-04 06:20:00每日論壇發貼之星
日期:2015-09-04 06:20:00每周論壇發貼之星
日期:2015-09-06 22:22:00程序設計版塊每日發帖之星
日期:2015-09-09 06:20:00程序設計版塊每日發帖之星
日期:2015-09-19 06:20:00程序設計版塊每日發帖之星
日期:2015-09-20 06:20:00每日論壇發貼之星
日期:2015-09-20 06:20:00程序設計版塊每日發帖之星
日期:2015-09-22 06:20:00程序設計版塊每日發帖之星
日期:2015-09-24 06:20:00
23 [報告]
發表于 2017-06-28 22:26 |只看該作者
本帖最后由 sunzhiguolu 于 2017-06-28 22:28 編輯

回復 22# 523066680
是啊,基礎不行才希望通過積分懸賞的形式 尋找技術強 熱心 有耐心的大神解答一下。
比如:
多個層次的判斷可以減少大量冗余的排列過程,例如第一個判斷:
當容器數組達到3個元素,可以計算第一行是否和為15,不是的話可以提前退回,節省后面6個元素的排列過程。
后面的判斷與此類似。
最后當容器數組的元素達到9個,且最后斜線合計也為15,對符合要求的排列順序進行輸出。

上貼所說,退回 退回到哪里,接下來處理過程會怎樣執行。這些都沒有講清楚,怎能不讓人提出疑問?
少年的基礎的確不咋地,還麻煩大神多多指點。(在您沒有失去耐心之前)

論壇徽章:
12
子鼠
日期:2014-10-11 16:46:482016科比退役紀念章
日期:2018-03-16 10:24:0515-16賽季CBA聯賽之山東
日期:2017-11-10 14:32:142016科比退役紀念章
日期:2017-09-02 15:42:4715-16賽季CBA聯賽之佛山
日期:2017-08-28 17:11:5515-16賽季CBA聯賽之浙江
日期:2017-08-24 16:55:1715-16賽季CBA聯賽之青島
日期:2017-08-17 19:55:2415-16賽季CBA聯賽之天津
日期:2017-06-29 10:34:4315-16賽季CBA聯賽之四川
日期:2017-05-16 16:38:55黑曼巴
日期:2016-07-19 15:03:112015亞冠之薩濟拖拉機
日期:2015-05-22 11:38:5315-16賽季CBA聯賽之北京
日期:2019-08-13 17:30:53
24 [報告]
發表于 2017-06-28 22:40 |只看該作者
本帖最后由 523066680 于 2017-06-28 23:20 編輯

回復 23# sunzhiguolu

你是在遞歸的部分不熟悉還是都不熟悉?我一直都是自學的,覺得可以自己消化的盡量自己消化。
只有這樣才能提高解決問題的能力,不然會對求助解答產生依賴。
講真如果你基礎太少,別人實在沒必要從非;A的東西跟你說起,因為那會涉及一本書的很多內容,總結是可以總結的,但別人總歸有工作要做。

元素排列的部分單獨提取就是這些行,可以單獨執行,加個print 可以觀察數組的變化過程
  1. E_( [ 1 .. 9 ], [] );

  2. sub E_
  3. {
  4.     my ( $a, $b ) = @_;
  5.     #此處省略若干代碼
  6.     E_( [ @$a[ 0 .. $_ - 1, $_ + 1 .. $#$a ] ], [ @$b, $a->[$_] ] )
  7.         for 0 .. $#$a;
  8. }
復制代碼
轉成直白點的代碼就是
  1. func( [1..5], [] );

  2. sub func
  3. {
  4.     my ( $a, $b ) = (shift, shift);
  5.     print join(",", @{$b}), "\n" if ( $#$a < 0 );
  6.    
  7.     for my $idx ( 0 .. $#$a )
  8.     {
  9.         my @arr = @$a;
  10.         my @brr = @$b;

  11.         push @brr, $arr[$idx];   #get element, from @arr to @brr
  12.         splice( @arr, $idx, 1 ); #delete element from @arr

  13.         func( \@arr, \@brr );    #next level
  14.     }
  15. }
復制代碼

分析代碼的時候,可以自己對代碼進行拆解,對中間插入 printf 來查看輸出內容或者 嘗試 perl -d xxx.pl 進入調試模式
也可以在草稿上畫出代碼演算的過程,相信很多人都經歷過。

而你可能并沒有這么做,也許是因為懶惰,不愿意有“多余”的付出。

最后,解釋權應該交給 rubyish,誰讓你寫的那么短

論壇徽章:
7
戌狗
日期:2013-12-15 20:43:38技術圖書徽章
日期:2014-03-05 01:33:12技術圖書徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16賽季CBA聯賽之青島
日期:2016-03-17 20:36:13
25 [報告]
發表于 2017-06-29 04:49 |只看該作者
回復 18# sunzhiguolu

如果代碼 添加了 use warnings; 該怎樣改動一下?
OK,

add
  1. use warnings;
復制代碼

NO warnings;
perl version 26, subversion 0 (v5.26.0)

論壇徽章:
7
戌狗
日期:2013-12-15 20:43:38技術圖書徽章
日期:2014-03-05 01:33:12技術圖書徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16賽季CBA聯賽之青島
日期:2016-03-17 20:36:13
26 [報告]
發表于 2017-06-29 05:02 |只看該作者
v2:
real        0m0.079s
user        0m0.065s
sys        0m0.004s

  1. #!/usr/bin/perl
  2. # version 26, subversion 0 (v5.26.0)

  3. use 5.010;

  4. explore();

  5. # ______________________ SUB ______________________

  6. sub explore { E_(0) }

  7. sub E_ {
  8.     my $n = shift;
  9.     state $b   = [ (0) x 4 ];
  10.     state $has = [ (0) x 10 ];
  11.     state $in = [ [ 0, 1 ], [ 2, 3 ], [ 0, 2 ], [ 1, 3 ], [ 0, 3 ] ];

  12.     if ( $n == 4 ) {
  13.         my ( @test, @x ) = (0) x 10;
  14.         $test[$_] = 1 for @$b;
  15.         
  16.         for my $i (@$in) {
  17.             my $it = $b->[ $i->[0] ] + $b->[ $i->[1] ];
  18.             return if $it < 6 or $it > 14;
  19.             $it = 15 - $it;
  20.             return if $test[$it]++;
  21.             push @x, $it;
  22.         }

  23.         return if $x[0] + $b->[3] + $x[2] != 15;
  24.         my @X = ( @$b[ 0, 1 ], $x[0], @$b[ 2, 3 ], @x[ 1 .. 4 ] );

  25.         say join ' ', @X[ 0, 1, 2 ];
  26.         say join ' ', @X[ 3, 4, 5 ];
  27.         say join ' ', @X[ 6, 7, 8 ];
  28.         say '-----';
  29.         return;
  30.     }

  31.     for my $it ( 1 .. 9 ) {
  32.         next if $has->[$it];
  33.         $has->[$it]++;
  34.         $b->[$n] = $it;
  35.         E_( $n + 1 );
  36.         $has->[$it]--;
  37.     }
  38. }

  39. __DATA__
  40. $_

復制代碼

論壇徽章:
7
戌狗
日期:2013-12-15 20:43:38技術圖書徽章
日期:2014-03-05 01:33:12技術圖書徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16賽季CBA聯賽之青島
日期:2016-03-17 20:36:13
27 [報告]
發表于 2017-06-29 05:19 |只看該作者
回復 23# sunzhiguolu

kankan:
  1. 0 [0 1 2 3]   []
  2. 1 [1 2 3]     [0]
  3. 2 [2 3]       [0 1]
  4. 3 [3]         [0 1 2]
  5. 4 []          [0 1 2 3]
  6. 3 [2]         [0 1 3]
  7. 4 []          [0 1 3 2]
  8. 2 [1 3]       [0 2]
  9. 3 [3]         [0 2 1]
  10. 4 []          [0 2 1 3]
  11. 3 [1]         [0 2 3]
  12. 4 []          [0 2 3 1]
  13. 2 [1 2]       [0 3]
  14. 3 [2]         [0 3 1]
  15. 4 []          [0 3 1 2]
  16. 3 [1]         [0 3 2]
  17. 4 []          [0 3 2 1]
  18. 1 [0 2 3]     [1]
  19. 2 [2 3]       [1 0]
  20. 3 [3]         [1 0 2]
  21. 4 []          [1 0 2 3]
  22. 3 [2]         [1 0 3]
  23. 4 []          [1 0 3 2]
  24. 2 [0 3]       [1 2]
  25. 3 [3]         [1 2 0]
  26. 4 []          [1 2 0 3]
  27. 3 [0]         [1 2 3]
  28. 4 []          [1 2 3 0]
  29. 2 [0 2]       [1 3]
  30. 3 [2]         [1 3 0]
  31. 4 []          [1 3 0 2]
  32. 3 [0]         [1 3 2]
  33. 4 []          [1 3 2 0]
  34. 1 [0 1 3]     [2]
  35. 2 [1 3]       [2 0]
  36. 3 [3]         [2 0 1]
  37. 4 []          [2 0 1 3]
  38. 3 [1]         [2 0 3]
  39. 4 []          [2 0 3 1]
  40. 2 [0 3]       [2 1]
  41. 3 [3]         [2 1 0]
  42. 4 []          [2 1 0 3]
  43. 3 [0]         [2 1 3]
  44. 4 []          [2 1 3 0]
  45. 2 [0 1]       [2 3]
  46. 3 [1]         [2 3 0]
  47. 4 []          [2 3 0 1]
  48. 3 [0]         [2 3 1]
  49. 4 []          [2 3 1 0]
  50. 1 [0 1 2]     [3]
  51. 2 [1 2]       [3 0]
  52. 3 [2]         [3 0 1]
  53. 4 []          [3 0 1 2]
  54. 3 [1]         [3 0 2]
  55. 4 []          [3 0 2 1]
  56. 2 [0 2]       [3 1]
  57. 3 [2]         [3 1 0]
  58. 4 []          [3 1 0 2]
  59. 3 [0]         [3 1 2]
  60. 4 []          [3 1 2 0]
  61. 2 [0 1]       [3 2]
  62. 3 [1]         [3 2 0]
  63. 4 []          [3 2 0 1]
  64. 3 [0]         [3 2 1]
  65. 4 []          [3 2 1 0]
復制代碼

論壇徽章:
145
技術圖書徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11獅子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龍
日期:2014-01-08 15:26:12技術圖書徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
28 [報告]
發表于 2017-06-29 06:23 |只看該作者
本帖最后由 jason680 于 2017-06-29 06:50 編輯

回復 22# 523066680

>> 少年,你的基礎 ……  

簡言之

7樓是 5樓 實例   ( 10樓也是 實例)
5樓是 7樓 說明/基礎

5樓是基礎,但他.....
只想要實例,看了實例又不懂......

基礎工作 只能留給他 慢慢消化 才能提高....

論壇徽章:
12
子鼠
日期:2014-10-11 16:46:482016科比退役紀念章
日期:2018-03-16 10:24:0515-16賽季CBA聯賽之山東
日期:2017-11-10 14:32:142016科比退役紀念章
日期:2017-09-02 15:42:4715-16賽季CBA聯賽之佛山
日期:2017-08-28 17:11:5515-16賽季CBA聯賽之浙江
日期:2017-08-24 16:55:1715-16賽季CBA聯賽之青島
日期:2017-08-17 19:55:2415-16賽季CBA聯賽之天津
日期:2017-06-29 10:34:4315-16賽季CBA聯賽之四川
日期:2017-05-16 16:38:55黑曼巴
日期:2016-07-19 15:03:112015亞冠之薩濟拖拉機
日期:2015-05-22 11:38:5315-16賽季CBA聯賽之北京
日期:2019-08-13 17:30:53
29 [報告]
發表于 2017-06-29 10:10 |只看該作者
本帖最后由 523066680 于 2017-06-29 17:42 編輯

靈魂圖解 —— 遞歸排列過程(請點開大圖或者下載PDF,再次吐槽CU的附件下載方式,還得關注公眾號掃二維碼)

紅色線是返回的過程,怕圖片篇幅太大沒有把第一層的全部過程放進去,自行腦補。

圖解遞歸排列元素.pdf (399.77 KB, 下載次數: 8)

圖解遞歸排列元素.png (448.01 KB, 下載次數: 103)

圖解遞歸排列元素.png

評分

參與人數 2信譽積分 +20 收起 理由
rubyish + 10 GOOOD ~~
Windows19 + 10

查看全部評分

論壇徽章:
12
子鼠
日期:2014-10-11 16:46:482016科比退役紀念章
日期:2018-03-16 10:24:0515-16賽季CBA聯賽之山東
日期:2017-11-10 14:32:142016科比退役紀念章
日期:2017-09-02 15:42:4715-16賽季CBA聯賽之佛山
日期:2017-08-28 17:11:5515-16賽季CBA聯賽之浙江
日期:2017-08-24 16:55:1715-16賽季CBA聯賽之青島
日期:2017-08-17 19:55:2415-16賽季CBA聯賽之天津
日期:2017-06-29 10:34:4315-16賽季CBA聯賽之四川
日期:2017-05-16 16:38:55黑曼巴
日期:2016-07-19 15:03:112015亞冠之薩濟拖拉機
日期:2015-05-22 11:38:5315-16賽季CBA聯賽之北京
日期:2019-08-13 17:30:53
30 [報告]
發表于 2017-06-29 18:58 |只看該作者
傷心,良心做圖,贊都沒有
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規則 發表回復

  

北京盛拓優訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網監中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區
中國互聯網協會會員  聯系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP
   日韩综合区视频第一页导航,无码JK粉嫩小泬在线观看,午夜精品A片一区二区三区,日日躁夜夜躁狠狠躁麻豆,大胆国模,免费观看无遮挡www的网站