Форум программистов, компьютерный форум CyberForum.ru

Оптимальное заполнение или "Халява" - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ дата http://www.cyberforum.ru/cpp-beginners/thread435250.html
Ввести (с клавиатуры) дату в формате ДД.ММ,ГГГГ и вывести на экран дату следующего дня (используются операторы *Условия выбора и циклы*-по заданию) заранее спасибо очень тяжело Си дается
C++ Аварийное завершение... почему? Код рабочий, но если элементов больше 4, тогда программа аварийно завершает работу, почему? #include <iostream> using namespace std; string Read(string Mass, int size){for(int i=0;i<size;i++){cout<<">"<<Mass<<endl;}} int main() { //string List={"one","two","three","four","five"}; string List={"one","two","three","four"}; http://www.cyberforum.ru/cpp-beginners/thread435243.html
C++ Решение задачи
Как решить задачу: поменять местами второй четный со вторым нечетным в одномерном массиве
C++ Поиск k-ого наименьшего элемента
Друзья есть код на паскале, нужно переписать на с++. Это алгоритм поиска к-го наименьшего элемента. У меня получается криво, с ошибками. procedure Find(k: integer); var L,R,i,j: integer; w,x: integer; begin L:=1; R:=N; while L<R-1 do begin
C++ Замена слов в строке http://www.cyberforum.ru/cpp-beginners/thread435213.html
Добрый вечер. Помогите, пожалуйста советом или кодом: требуется полученную строку изменить так, чтобы первое и среднее слово поменялись местами. void f(char *s) { int len=strlen(s); int na4slovo1=0,konezslovo1=0,na4slovo2=0,konezslovo2=0,kolslov=0; for(int k=0;k<len;k++) { if(s==' ' && s!=' ') //нашли количество слов kolslov++;
C++ зеркальное отображение в С Дана задача сделать зеркальное отображение двумерного массива M*N Нужно поменять 1-ый с последним, 2-ой с предпоследним и т.д. подробнее

Показать сообщение отдельно
AncinetHero
49 / 49 / 3
Регистрация: 22.05.2011
Сообщений: 326
20.05.2012, 16:21     Оптимальное заполнение или "Халява"
Цитата Сообщение от valeriikozlov Посмотреть сообщение
Могу описать алгоритм, который сам использовал для решения этой задачи:
Для решения нужны два трехмерных массива: t1[][][] размером (a+1)*(b+1)*(c+1) и t2[][][] такого же размера. Изначально значения массивов равны 0.
t1[][][] - нужен для количества звездочек, которые не хватает на очередную футболку. Т.е. любое значение t1[i][j][y] (i- количество крышек с 1 звездой, j - количество крышек с 2-мя звездами, y - количество крышек с 3-мя звездами) может быть в диапазоне от 0 до K-1. Как только это значение достигает или превышает K , то мы значение t1[i][j][y] обнуляем, но увеличим на 1 значение t2[i][j][y].
t2[i][j][y] - будет иметь значение максимального числа футболок когда: i- количество крышек с 1 звездой, j - количество крышек с 2-мя звездами, y - количество крышек с 3-мя звездами.
Теперь сам проход:
три цикла:
C++
1
2
3
  for(i=1; i<a+1; i++)
      for(j=1; j<b+1; j++)
          for(y=1; y<c+1; y++)
В каждой итерации выбираем максимальные значения для t1[i][j][y] и t2[i][j][y].
Пробуем сначало оттолкнуться от значения t1[i-1][j][y] (количество неиспользуемых звезд) и t2[i-1][j][y] (количество имеющихся футболок). t1[i][j][y] будет равно t1[i-1][j][y]+1, а t2[i][j][y] будет равно t2[i-1][j][y]. Но если t1[i][j][y] стало равным или более K, то запишем t1[i][j][y]=0; t2[i][j][y]++;

Потом пробуем оттолкнуться от значения t1[i][j-1][y] и t2[i][j-1][y]. Здесь нужно учитывать, что значения в t1[i][j][y] и t2[i][j][y] уже есть, но если количество футболок получаем из варианта [i][j-1][y] превысит записанное значение в t2[i][j][y] или
количество футболок останется прежним, но увеличится количество неиспользованных звезд, то значения t1[i][j][y] и t2[i][j][y] будут расчитываться от значений t1[i][j-1][y] и t2[i][j-1][y].

Так же в этой же итерации проверяется возможность получения максимального значения t1[i][j][y] и t2[i][j][y] из варианта t1[i][j][y-1] и t2[i][j][y-1]
Спасибо за обьяснение, сейчас попробую сдать. Вообще странно, что 10^8 операций заходят.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru