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

задача с подбором весов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Объявление функции как аргумента http://www.cyberforum.ru/cpp-beginners/thread716979.html
Как объявить функции в качестве аргумента в другой функции?
C++ Найти в строке символы с С1 по С2 в ASCII коде День добрый!Я достаточно зелёный новичок в с++,и особенно в линуксе,мне было дано задание: Написать программу, осуществляющую замену в файле всех символов с кодами от C1 по C2 на пробелы. Вроде бы всё достаточно тривиально,но я не умею программировать на линуксе(где мне и надо сделать это задание),поэтому прошу у вас помощи и выкладываю свои наработки.Посоветуйте, пожалуйста,решения,или... http://www.cyberforum.ru/cpp-beginners/thread716976.html
Найти сумму членов арифметической прогрессии C++
Подскажите пожалуйста как это сделать в с++: Найти сумму членов арифметической прогрессии a, a+d,...,a+(n-1)d по введенным значениям a,d,n. Очень срочно надо, скоро сессия
C++ как найти предыдущий пробел в строке?
Например я нахожусь в конце строки, как найти предыдущий пробел в строке?
C++ Приведение типов http://www.cyberforum.ru/cpp-beginners/thread716958.html
При вводе с клавиатуры s = 11 и a = 1.1, получаем 9. Результат переменной d = 10, это правильно. В чём подвох? int main() { double s; double a; cin >> s >> a; int c = s/a; int d = 11/1.1;
C++ Ряды Тейлора (проверить) Добрый вечер. Решил задачу, но не уверен на 100% что правильно, тк не могу понять как правильно пользоваться калькуляторами рядов Тейлора, которые нагуглил. В аттаче формула, по которой решается задача, ниже код который у меня получился. Можете проверить и сказать где ошибка, если не правильно? #include <iostream> using namespace std; void main() { setlocale(LC_ALL, ""); подробнее

Показать сообщение отдельно
nordik
Сообщений: n/a
02.12.2012, 22:57     задача с подбором весов
1. Имеются десять гирь весом a1, a2, ..., a10. Обозначим через ck – число способов, которыми можно составить вес k, то есть ck – это число решений уравнения a1x1 + a2x2 +...+ a10x10 = k, где xi может принимать значения 0 или 1 (i=1,..., 10). Получить с0, с1, ..., с10.


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
#include <iostream>
#include <math.h>
 
using namespace std;
 
void inputArray(int **data, int *dataLength) {
cout « "Input array length: ";
cin » *dataLength;
*data = new int[*dataLength];
for(int i = 0; i < *dataLength; i++) {
cout « "[" « i « "] = ";
cin » (*data)[i];
}
}
 
int main(int argc, char* argv[]) {
int *w, wCount, wSum;
cout « "Input weights: " « endl;
inputArray(&w, &wCount);
cout « "Input sum weight: ";
cin » wSum;
 
for (unsigned int i = 0; i < (unsigned int) (pow(2.0, 2 * wCount) + 0.1); i++) {
for (int j = wCount - 1; j >= 0; j--) {
printf("i=%d\n",i);
printf("j=%d\n",j);
printf("\n"); 
}
printf("\n"); 
}
for (unsigned int i = 0; i < (unsigned int) (pow(2.0, 2 * wCount) + 0.1); i++) {
for (int j = wCount - 1; j >= 0; j--){ 
printf ("%d",(i »2 * j) & 1);
 
}
printf("\n");
}
for (unsigned int i = 0; i < (unsigned int) (pow(2.0, 2 * wCount) + 0.1); i++) {
int tmp = 0;
for (int j = wCount - 1; j >= 0; j--) 
tmp +=((i »2 * j) & 1) * w[j];
if (tmp == wSum) {
for (int j = wCount - 1; j >= 0; j--)
if ((i »2 * j) & 1)
cout « w[j] « " ";
cout « endl;
}
}
}
вот реализация он мне сказал что зачтёт её если передалаю так что будет работать если гирю можно будет брать ещё по 2 раза каждую.

тут используются побитовые сдвиги пробегает от 00000 до 11111 неважно какое количество цифр если 0 то не берём гирю если 1 берём,а он мне подсказал что если по 2 раза берём то теперь нужно брать по 2 бита как-то 01 и 00-не берём гирьку,10-берём 1,11-берём 2.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru