Форум программистов, компьютерный форум, киберфорум
Наши страницы

Задача с olympiads.ru - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определить треугольники минимальной и максимальной площади, которые можно построить из отрезков http://www.cyberforum.ru/cpp-beginners/thread770609.html
13. Известны длины отрезков a, b, c и d. Определить треугольники минимальной и максимальной площади, которые можно построить из этих отрезков. помогите решить эту задачу с помощью <stdio.h>...
C++ Укажите путь заблудшему Есть строка вида "Alex Johnson|1234678901\nBill Gates|548161198\n" - т.е. "<Абонент>|<номер телефона>\n...". Написал функцию которая принимает в качестве параметра эту строку и возвращает массив... http://www.cyberforum.ru/cpp-beginners/thread770605.html
в проекте - надо в проекте win32api вынести все в другой *cpp* а не получаеться C++
определил функцию в другом спп и в основном ругается компилятор
Определить треугольники минимальной и максимальной площади C++
Известны длины отрезков a, b, c и d. Определить треугольники минимальной и максимальной площади, которые можно построить из этих отрезков.
C++ Определить, пересекаются ли парабола и прямая http://www.cyberforum.ru/cpp-beginners/thread770484.html
Определите, пересекаются ли парабола у=cx2+dx+f и прямая y=ax+b. При положительном ответе найти точки пересечения.
C++ составить программу,которая создает файл, состоящий из 10 значений типа int. прочитать файл и вычислить сумму его элементов составить программу,которая создает файл, состоящий из 10 значений типа int. прочитать файл и вычислить сумму его элементов подробнее

Показать сообщение отдельно
lunohod-1
1 / 1 / 0
Регистрация: 14.12.2011
Сообщений: 44
24.01.2013, 16:52  [ТС]
Чуть измененный и оптимизированный вариант функции:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int tryto(long long a[],int k,int s) {
//a-массив с ценами, k-размер массива, s-нужная сумма
long sum,b,c,r;
sum=b=0;
std::sort(a,a+k);  //сортируем полученный массив
r=k;  
if(a[k]==s) { //если самый большой элемент равен s, сразу же возвращаем 1
return 1;
}
else {
    for(b=0;b<=r;b++) {  //берем первую цифру для сравнения
    sum=a[b];  //ставим ее первой в сумму
        for(c=1;c<=r;c++) {  //перебираем все варианты сумм.
        if(c!=b) { //элементы можно брать только один раз
            if(a[b]+a[c]<=s) { sum+=a[c]; }  //если это меньше наличности, берем
        }
        if(sum==s) { return 1; }  //Ура, хватило!:)
        }
    }
    return 0; //Не хватает или много
    }
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru