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

Жадный алгоритм - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ скажите что нет так http://www.cyberforum.ru/cpp-beginners/thread209753.html
В двумерном массиве хранятся данные об оценках N студентов по М предметам. Номер строки соответствует номеру студента в группе, номер столбца – предмету. Опре-делить K самых успешных студентов. ЕСЛИ МОЖНО НАПИШИТЕ КАК НАДО. #include "stdafx.h" #include "stdlib.h" #include "stdio.h" #include "windows.h" #include "locale.h"
C++ Указатели Доброго времени суток! Мне очень нужна помощь! Нужно написать программу, которая, используя УКАЗАТЕЛИ на функции для их вызова, вычисляет цепную дробь: n+1/(n-1)+1/(n-2)+...+1/2. Все дело в том, что мне нужно это очень срочно, на завтра, поэтому нет времени долго разбираться самой. Буду очень благодарна за Вашу отзывчивость!!! http://www.cyberforum.ru/cpp-beginners/thread209738.html
Удаление узла из дерева C++
сделав функции добавления,поиска,пару обходов и вывод ввиде дерева в консоли(жаль что нельзя размер по x изменить) при тестировании возникла проблема удаления. суть в том что когда я удаляю элементы если я удалю все элементы левого поддерева то,теоретически,корнем должен стать узел из правого поддерева но! вылетает прога тогда. вот почти рабочая функция.что не так? int rightmost(uzel...
C++ Builder Форма ввода логина и пароля (BCB6)
помогите плиз!! надо сделать форму на логин и пароль в builder 6! ну штоби в едити ввадить их! личше штоб пароль не висвечивалса при вводе! срочно нужно! как ето прописать и привезать к едитам (если к едитам)!
C++ Разделить на два массива http://www.cyberforum.ru/cpp-beginners/thread209694.html
Есть N строк вида: a1 b2 c3 хочу разделить их на два символьных массива что бы a,b,c в один, а числа в другой. Код: void main() { int N; char c,t;
C++ В каждой строке матрицы заменить на 0 все элементы до первого отрицательного элемента Доброго времени суток! Помогите, пожалуйста, с задачей: Среда CodeGear RAD Studio 2009. Разработать алгоритм и отладить программу, используя динамический массив. Дана матрица А(m, n). В каждой строке матрицы заменить на 0 все элементы до первого отрицательного элемента. #include <clocale> #include <iostream> #include <conio.h> #pragma hdrstop using namespace std;... подробнее

Показать сообщение отдельно
АлександрШ
2 / 2 / 0
Регистрация: 11.12.2010
Сообщений: 16

Жадный алгоритм - C++

13.12.2010, 08:31. Просмотров 2640. Ответов 2
Метки (Все метки)

Нужно сделать проверку на правильность жадного алгоритма, доказать, что его решение единственно правильное. Кто знает? вот вполне рабочий код с жадным алгоритмом.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <stdio.h>
#include <iostream>
 
using namespace std;
 
int max(double* m, int n) {
  double max;
  int i, k;
  max = m[0];
  for (i=1;i<n;i++)
    if (max < *(m+i)){
      max = *(m+i);
      k = i;
    }
  return k;
}
 
int main() {
  double b = 0;
  cout << "Введите время срочного выполнения: ";
  cin >> b;
 
  int n = 0;
  cout << "Количество заказов: ";
  cin >> n;
 
  double m[n];
  double min_el, min_r, temp, sum, time;
  int mk[n];
  int i, j, k;
  double a[] = {8, 3, 7, 5, 9, 4};
  double c[] = {12, 10, 8, 9, 16, 20};
  // формирование массива отношений времени к прибыли
  for(i=0;i<n;i++) {
    m[i] = a[i] / c[i];
  }
 
 min_el = 0;
  for(j=0;j<n;j++) {
    min_r = m[max(m, n)] - min_el;
    for(i=0;i<n;i++){
      temp = m[i] - min_el;
      if((temp > 0) && (min_r >= temp)) {
        min_r = temp;
        k = i;
      }
    }
    mk[j] = k;
    min_el = m[k];
  }
 
  // подсчёт и вывод результатов
  sum = 0;
  time = 0;
  cout << endl;
  cout << "Выполняйте заказы с номерами:";
  for(i=0;i<n;i++) {
    if((time + a[mk[i]]) <= b) {
      cout << " " << mk[i] + 1;
      time += a[mk[i]];
      sum += c[mk[i]];
    }
  }
  cout << endl;
  cout << "Прибыль: " << sum << endl;
  cout << "Время: " << time << endl;
  return 0;
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 07:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru