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

Необходимо разбить камни на две кучи таким образом, чтобы веса куч отличались не более чем в 1.5 раза. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
apple1988
0 / 0 / 0
Регистрация: 29.03.2011
Сообщений: 24
04.04.2011, 11:38     Необходимо разбить камни на две кучи таким образом, чтобы веса куч отличались не более чем в 1.5 раза. #1
Имеется N камней веса А1,А2,...,АN.
Необходимо разбить их на две кучи таким образом, чтобы веса куч отличались не более чем в 1.5 раза. Если этого сделать нельзя, то указать это.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2011, 11:38     Необходимо разбить камни на две кучи таким образом, чтобы веса куч отличались не более чем в 1.5 раза.
Посмотрите здесь:

В матрице M x N переставить строки таким образом, чтобы... C++
Дан вещественный массив А (n). Отсортировать его таким образом, чтобы C++
C++ Реализовать процедуру таким образом, чтобы она возвращала 2 значения
Преобразовать строку таким образом, чтобы все слова в ней были напечатаны наоборот C++
C++ Модифицировать программу таким образом, чтобы класс содержал закрытые переменные
Преобразовать строку таким образом, чтобы все символы в ней были напечатаны наоборот C++
Распределить камни в две кучи так, чтобы модуль разности весов этих двух куч был минимальным C++
Текст, состоящий не более чем из 255 символов, разбить на строки длиной не более 50 символов в строке C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IrineK
Заблокирован
04.04.2011, 13:00     Необходимо разбить камни на две кучи таким образом, чтобы веса куч отличались не более чем в 1.5 раза. #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
#include <iostream>
#define N 10
using namespace std;
 
void create_lot(int stones[]) //создание массива весов камней
{
    cout<<N<<" камней в куче. Их вес:\n";
    for(int i=0;i<N;i++)
    {cout<<(i+1)<<": ";
    cin>>stones[i];}
}
 
void arrange_lot(int stones[]) //сортировка по убыванию
{
int i,j,cur;
for(i=0;i<N-1;i++)
    for(j=i+1;j<N;j++)
        if(stones[i]<stones[j])
        {   cur=stones[i];
            stones[i]=stones[j];
            stones[j]=cur;  }
}
 
void arrange_bags(int stones[]) //создание двух куч, как можно более близких по весу
{
int sum1=0, sum2=0, k1=0, k2=0, i;
int bag1[N-1],bag2[N-1];
for(i=0;i<N;i++)
{
    if(sum1<=sum2)
    {   bag1[k1]=stones[i];
        sum1+=stones[i];
        k1++;}
    else
    {   bag2[k2]=stones[i];
        sum2+=stones[i];
        k2++;}
}
if(1.0*sum1/sum2 <=1.5)
{   cout<<"\nКуча 1: ";
    for(i=0;i<k1;i++)
        cout<<bag1[i]<<"  ";
    cout<<"\nВес 1: "<<sum1<<endl;
    cout<<"\nКуча 2: ";
    for(i=0;i<k2;i++)
        cout<<bag2[i]<<"  ";
    cout<<"\nВес 2: "<<sum2<<endl;
}
else cout<<"Вес различается больше чем в 1,5 раза\n";
}
 
int main()
{
    setlocale(LC_ALL,"");
    int lot[N];
    create_lot(lot);
    arrange_lot(lot);
    arrange_bags(lot);
 
    cin.sync(); cin.get();
    return 0;
}
Миниатюры
Необходимо разбить камни на две кучи таким образом, чтобы веса куч отличались не более чем в 1.5 раза.  
apple1988
0 / 0 / 0
Регистрация: 29.03.2011
Сообщений: 24
04.04.2011, 14:27  [ТС]     Необходимо разбить камни на две кучи таким образом, чтобы веса куч отличались не более чем в 1.5 раза. #3
большое спасибо!
Yandex
Объявления
04.04.2011, 14:27     Необходимо разбить камни на две кучи таким образом, чтобы веса куч отличались не более чем в 1.5 раза.
Ответ Создать тему
Опции темы

Текущее время: 09:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru