この問題も、
call :set_v v 19 01 23 75 03 34
というように配列を初期化します。
この問題はメモ化を使えば速いのですが、ここでは全探索することが求められています。全探索は再帰を使えば簡単に可能です。
@echo off setlocal set /a v.size = 0 call :set_v v 75 call :set_v v 95 64 call :set_v v 17 47 82 call :set_v v 18 35 87 10 call :set_v v 20 04 82 47 65 call :set_v v 19 01 23 75 03 34 call :set_v v 88 02 77 73 07 63 67 call :set_v v 99 65 04 28 06 16 70 92 call :set_v v 41 41 26 56 83 40 80 70 33 call :set_v v 41 48 72 33 47 32 37 16 94 29 call :set_v v 53 71 44 65 25 43 91 52 97 51 14 call :set_v v 70 11 33 28 77 73 17 78 39 68 17 57 call :set_v v 91 71 52 38 17 14 91 43 58 50 27 29 48 call :set_v v 63 66 04 68 89 53 67 30 73 16 69 87 40 31 call :set_v v 04 62 98 27 23 09 70 98 73 93 38 53 60 04 23 call :max_sum 0 0 echo %ERRORLEVEL% exit /b 0 :max_sum setlocal if %2 == %v.size% exit /b 0 set /a y = %2 + 1 set /a x1 = %1 call :max_sum %x1% %y% set /a m1 = %ERRORLEVEL% set /a x2 = %1 + 1 call :max_sum %x2% %y% set /a m2 = %ERRORLEVEL% if %m1% GTR %m2% ( set /a m = %m1% + "v_%2_%1" ) else ( set /a m = %m2% + "v_%2_%1" ) exit /b %m% :max_path setlocal set /a x = %1 set /a y = %2 if %y% == %v.size% - 1 call :max_path :set_v set /a size = "%1.size" set /a %1.size += 1 :loop_set_v if "%2" == "" exit /b 0 set /a a = 1%2 %% 100 call :push_vector %1_%size% %a% shift /2 goto :loop_set_v exit /b 0 :push_vector set /a _size = "%1.size" set %1_%_size%=%2 set /a %1.size += 1 exit /b 0