Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
2 / 2 / 0
Регистрация: 02.02.2010
Сообщений: 5
1

В каждом столбце обнулите минимальное количество элементов так, чтобы сумма элементов столбца не превышала заданную

26.04.2010, 13:51. Просмотров 941. Ответов 5
Метки нет (Все метки)

Помогите решить при помощи функций.плиссзО_о

Пусть дана матрица А(n x m), состоящая из натуральных чисел. В каждом столбце обнулите минимальное количество элементов так, чтобы сумма элементов столбца не превышала заданную.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.04.2010, 13:51
Ответы с готовыми решениями:

В каждом столбце матрицы обнулить минимальное количество элементов так, чтобы сумма элементов столбца не превышала заданную.
такая задача: A - прямоуг. матрица n*m целых чисел. В каждом столбце обнулить минимальное...

В каждом столбце матрицы обнулить мин. количество элементов так, чтобы сумма элементов столбца не превышала заданную
Пусть данная матрица m*n, которая состоит из чисел. В каждом столбце обнулить минимальное...

Обнулить минимальное количество элементов так, чтобы сумма элементов столбца матрицы не превышала заданную
Нужна помощь в написании программы. Составьте процедуру, обнуляющую минимальное количество...

Обнулить минимальное количество элементов так, чтобы сумма элементов столбца матрицы не превышала заданную
Составить процедуру обнуляющую минимальное количество элементов так, чтобы сумма элементов столбца...

5
ниначмуроФ
846 / 530 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
26.04.2010, 15:52 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
#include <iostream>
#include <vector>
#include <conio.h>
#include <iomanip>
 
int main()
{
    const int SIZE_MAS=5;
    std::vector<int> mas(SIZE_MAS);
    srand(time(NULL));
 
    mas[0]=8;
    mas[1]=1;
    mas[2]=2;
    mas[3]=4;
    mas[4]=3;
 
    std::cout<<std::endl<<"DO: "<<std::endl;
    int sum=0; //сумма элементов массива
    for (int i=0; i<mas.size(); i++){
       // mas[i]=1+rand()%10;
        sum+=mas[i];
        std::cout<<std::setw(3)<<mas[i];
    }
 
    int max_sum=0;
    std::cout<<std::endl<<"vvedite maximalnyu summu= ";
    std::cin>>max_sum;
 
//cам алгоритм
    sum-=max_sum;
    while(sum>0){
        int ii=0;
        int i=0;
        int max_element=0;
        while (i<mas.size()){ //поиск максимума
            if(mas[i]>=max_element && mas[i]<=sum){
                max_element=mas[i];
                ii=i;
            }
            ++i;
        }
        sum-=max_element;
        mas[ii]=0;
    }
//конец
 
    std::cout<<std::endl<<"POSLE: "<<std::endl;
    for (int i=0; i<mas.size(); i++)
    std::cout<<std::setw(3)<<mas[i];
 
    return 0;
}
но вследствии испытаний, я думаю что не к каждому масииву можно применить этот алгоритм, например к этому: 7 3 7 6 1, и если требуется сумма 5, то никак не получается.

Добавлено через 4 минуты
вообщем если в качестве контрольной суммы ввести число, которое можно составить из элементов массива, то все работает.
0
2 / 2 / 0
Регистрация: 02.02.2010
Сообщений: 5
28.04.2010, 11:04  [ТС] 3
Цитата Сообщение от PointsEqual Посмотреть сообщение
Не знаю как с трехмерной матрицей
Вообще та єто двухмерная.
0
ниначмуроФ
846 / 530 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
28.04.2010, 11:18 4
Цитата Сообщение от include Посмотреть сообщение
А(n x m)
а чего тогда там 3 перемнных?
0
Эксперт С++
5017 / 2596 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
28.04.2010, 12:30 5
Это крестик, а не икс
0
ниначмуроФ
846 / 530 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
28.04.2010, 12:36 6
мда....

Добавлено через 3 минуты
Цитата Сообщение от PointsEqual Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//cам алгоритм
 sum-=max_sum;
 while(sum>0){
 int ii=0;
 int i=0;
 int max_element=0;
 while (i<mas.size()){ //поиск максимума
 if(mas[i]>=max_element && mas[i]<=sum){
 max_element=mas[i];
 ii=i;
 }
 ++i;
 }
 sum-=max_element;
 mas[ii]=0;
 }
//конец
алгоритм все равно подходит, если чуть чуть изменить
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.04.2010, 12:36

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Составьте процедуру, обнуляющую минимальное количество элементов так, чтобы сумма элементов столбца матрицы
Пытался решить,но не получается.Даже условие не понятно.

Какое минимальное количество элементов массива S надо составить подряд начиная с первого, чтобы их сумма превышала X?
Заданный массив S (n) и значения x. Определить, какое минимальное количество элементов массива S...

В каждом столбце матрицы найти количество элементов, больших среднего арифметического элементов столбца
помогите с задачей!!! дана матрица размера M*N.в каждом её столбце найти количество...

В каждом её столбце найти количество элементов, больших среднего арифметического всех элементов этого столбца
Доброго времени суток! Дана матрица размера M × N. В каждом её столбце найти количество...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.