Сколькими способами гирями заданного набора весов можно составить вес в v грамм? - C (СИ)
Формулировка задачи:
Имеются 10 гирь весом 100, 200, 300, 500, 1000, 1200, 1400, 1500, 2000, 3000 г. Сколькими способами гирями этого набора можно составить вес в v грамм.
Решение задачи: «Сколькими способами гирями заданного набора весов можно составить вес в v грамм?»
textual
Листинг программы
#include "foo.h"
void foo(v) {
int q, w, e, r, t, y, u, i, o, p, z;
z=0;
for (q=0; q<2; q++) {
for (w=0; w<2; w++) {
for (e=0; e<2; e++) {
for (r=0; r<2; r++) {
for (t=0; t<2; t++) {
for (y=0; y<2; y++) {
for (u=0; u<2; u++) {
for (i=0; i<2; i++) {
for (o=0; o<2; o++) {
for (p=0; p<2; p++) {
if (v==q*100+w*200+e*300+r*500+t*1000+y*1200+u*1400+i*1500+o*2000+p*3000) {
z++;
}
}
}
}
}
}
}
}
}
}
}
printf("%d sposobov", z);
}
Объяснение кода листинга программы
В данном коде неизвестная функция foo() пытается перебрать все возможные комбинации весов гирь от 0 до 1500 грамм (так как все остальные веса не учитываются в условии) и проверить, можно ли с их помощью составить заданный вес в v грамм. Внутри функции представлен цикл, который перебирает все возможные комбинации гирь. Для каждой комбинации выполняется проверка условия, и если заданный вес v грамм можно получить с помощью данной комбинации, то переменная z увеличивается на единицу. В конце функции выводится значение переменной z, которое представляет собой количество способов, которыми можно составить заданный вес v грамм с помощью данных гирь.