Поиск:

Ответ в темуСоздание новой темы Создание опроса
> два цикла нужно в один переделать. Что-то не могу додуматься :) 
:(
    Опции темы
Wowa
Дата 2.2.2006, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Есть метод:

Код

int comp(int m, int n)
{
int sum=0;
for (int i=0; i<m; i++)
   for(int j=n; n>0; n--) 
          sum=sum+podchet(i,j);
return(sum);
}


Нужно сделать эквивалентный метод, но который содержал бы только один цикл(for, while или repeat). Решение должно быть независимо от метода int podchet(int, int)
PM WWW   Вверх
Mayk
Дата 2.2.2006, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 2
Всего: 134



Цитата(Wowa @ 3.2.2006, 00:39 Найти цитируемый пост)

for(int j=n; n>0; n--)

эта строка верна?


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Wowa
Дата 2.2.2006, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Верна
PM WWW   Вверх
Mayk
Дата 2.2.2006, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 2
Всего: 134



smile
Тогда в идеале выполняется за O(n)

Код

#include <stdio.h>

int podchet(int i, int j)
{
        printf("i=%d j=%d\n",i,j);
}

int comp(int m, int n) //без изменений
{
int sum=0;
for (int i=0; i<m; i++)
   for(int j=n; n>0; n--)
          sum=sum+podchet(i,j);
return(sum);
}

int comp1(int m, int n)
{
        int sum=0;
        for(int i = 0; i < n; ++i){
                sum += podchet(0,n);
        }
        return(sum);
}



int main()
{
        comp(2,7);
        printf("\n");
        comp1(2,7);
}

Вывод:
Цитата(cpp)

i=0 j=7
i=0 j=7
i=0 j=7
i=0 j=7
i=0 j=7
i=0 j=7
i=0 j=7

i=0 j=7
i=0 j=7
i=0 j=7
i=0 j=7
i=0 j=7
i=0 j=7
i=0 j=7

и я не понимаю смысл в m
Добавлено @ 21:13
Если всё же имелось ввиду
Цитата

  for(int j=n; j>0; j--)

то
Код

int comp(int m, int n)
{
int sum=0;
for (int i=0; i<m; i++)
   for(int j=n; j>0; j--)
          sum=sum+podchet(i,j);
return(sum);
}

int comp1(int m, int n)
{
        int sum=0;
        for(int i = 0; i < n*m; ++i){
                sum += podchet(i/n,n-i%n);
        }
        return(sum);
}

int main()
{
        comp(2,4);
        printf("\n");
        comp1(2,4);
}

Код

i=0 j=4
i=0 j=3
i=0 j=2
i=0 j=1
i=1 j=4
i=1 j=3
i=1 j=2
i=1 j=1

i=0 j=4
i=0 j=3
i=0 j=2
i=0 j=1
i=1 j=4
i=1 j=3
i=1 j=2
i=1 j=1


Это сообщение отредактировал(а) Mayk - 2.2.2006, 21:15


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0741 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.