Форум » Динамическое программирование » не сошелся ответ в 18-ом, задача 22 » Ответить

не сошелся ответ в 18-ом, задача 22

NotikKotikggg: Логика решения. Если ты попал в ячейку, которая не является стеной, то производи сложение. Если эта ячейка стена - ничего не делай. =ЕСЛИ(НЕ((K11>100)*И(K11<500));K11+МАКС(K25;L24)) В поиске минимума ответ сошелся, в поиске максимума нет - мой ответ 1451 (а в ответах 1492)

Ответов - 8

Владимир Шубинкин: Здравствуйте! В Вашей формуле неадекватно используется функция И(). Следовало написать НЕ(И(K11>100;K11<500)). Проблема, конечно, не в этом, так как значений более 500 не встречается. Я бы на Вашем месте для надёжность оставлял в ячейке со стеной не 0, а "минус бесконечность" (например -10000) при поиске максимума, чтобы эта ячейка точно не попала в оптимальный путь. Но суть и не в этом тоже. Я намеренно скопировал Вашу формулу, вставил её в таблицу и получил... 1492 (как в ответах!). Предполагаю, что Вы либо использовали не тот файл, либо как-то ошиблись на границе.

Olga Sav1:

Поляков: Показывайте решение.


Чаговец: Добрый день. В этой задаче у меня сошелся максимальный ответ, а минимальный получается 389. 24 37 48 98 175 244 318 328 333 431 468 517 105 122 03 195 231 324 ст 374 378 409 437 488 131 219 167 265 290 332 ст 448 417 465 449 535 142 225 185 278 342 380 385 482 423 437 495 573 228 306 ст 317 321 323 390 401 417 504 576 619 309 323 351 341 339 412 391 401 443 501 540 547 383 366 ст 351 396 427 481 438 463 ст 566 640 ст 422 467 408 433 440 444 447 481 543 630 724 0 20 104 192 226 290 385 430 431 445 496 504 0 14 36 52 61 121 159 197 245 269 311 393 0 84 134 137 ст 169 215 252 335 368 318 321 0 64 140 169 234 184 265 309 392 416 379 389 Я стены оставила пустыми, а в остальных ячейках (кроме верхних и левых) формула =B2+МИН(O1;N2). Не понимаю, где может быть ошибка.

vladimirKazan: Добрый день! Ошибка в том, что пустое поле приравнивается при расчётах к нулю. Этого не достаточно, потому что ноль может быть компенсирован за счёт других значений. Особенно плох ноль при поиске минимума, ведь путь через стену становится выгоднее. Поэтому при поиске минимума стены следует заменять на +бесконечность (например, +100000), а при поиске максимума - на -бесконечность, тогда Робот "не выберет" этот путь. Кроме того, не нужно это делать вручную! Используйте ЕСЛИ()

Vin: Здравствуйте, минимум тоже не выходит 576 575 562 588 538 503 434 360 350 631 539 665 552 616 551 558 461 481 10000 391 345 533 502 616 471 531 496 503 405 388 10000 374 300 530 474 565 445 434 432 414 346 346 301 336 261 476 462 479 437 351 10000 321 282 298 296 239 255 468 404 401 351 270 322 294 278 318 229 228 239 381 323 355 327 253 10000 270 260 229 275 218 197 10000 284 348 10000 210 249 260 203 198 185 181 172 199 258 255 220 154 204 236 166 187 189 183 138 137 171 161 171 134 120 148 132 123 94 209 171 123 120 153 170 148 98 197 10000 63 56 195 173 99 78 71 673 650 586 510 478 413 398 317 260 177 129 68 =ЕСЛИ(НЕ(И(K11>100;K11<500));K11+МИН(K25;L24);10000) Подскажите, что не так

nikson: Посмотрите здесь ответ. Думаю можете потом аналогично формулы скопировать https://i.postimg.cc/8zMyVMCT/18.png

Vin: спасибо, все гораздо проще, я разобралась =ЕСЛИ(И(B2>100;B2<500);10000;B2+МИН(A15;B14))



полная версия страницы