Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2013, 00:01   #1
akademochka
Пользователь
 
Регистрация: 06.11.2011
Сообщений: 44
По умолчанию ДП(Черепашка)

http://www.e-olimp.com/problems/15
Код:
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
int a[100][100];
int ans[100][100];
int main(int argc, char *argv[])
{ int m,n,i,j;
     
     scanf("%d%d",&m,&n);
     for(int j=1;j<=n;j++)
         for(int i=1;i<=m;i++)
     scanf("%d",&a[i][j]);
ans[1][1]=a[1][1];
     for (i=2;i<=m;i++) 
{ans[i][1] == 0;}
         for (i=2;i<n;i++) 
{ans[1][i] == 0;}
     for (i=m;i>=2;i--) {
         for (j=2;j<=n;j++) {
ans[i][j]=min(ans[i-1][j],ans[i][j-1])+a[i][j];
       if(min(ans[i-1][j],ans[i][j-1])==ans[i-1][j])
  printf("R");
        if(min(ans[i-1][j],ans[i][j-1]) ==ans[i][j-1]) printf("F");}}
  printf("\n");
    system("PAUSE");
    return EXIT_SUCCESS;
}
Помогите, пожалуйста, только на 17% засчитывает
akademochka вне форума Ответить с цитированием
Старый 19.04.2013, 09:44   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

не смог разобраться в вашем алгоритме.
есть подозрение, что Вы ищете путь не из левого нижнего угла и/или не в правый верхний..

например, почему ans[1][1]=a[1][1]; ???!!!!

кроме того, массивы в С индексируются от нуля.
Поэтому,если Вы обращаетесь к элементам, начиная от 1, то Вам одного элемента для того, чтобы обработать 100 значений НЕ ХВАТИТ!
Вам нужно или делать массивы размером a[101][101], ans[101][101], или, лучше, адресовать элементы массивов, начиная с НУЛЯ.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц