Премини към съдържанието

Препоръчан отговор


Може ли да ми помогнете да променя скрипт, който генерира всички възможни комбинации с предварително зададените му числа, така че да генерира комбинациите с 4 числа, a не със всички възможни.

КОДА:

Мерси предварително.

#include <iostream>#include <vector>#include <stdio.h>#include <stdarg.h>#include <string.h>#include <algorithm>using namespace std;struct State {    int v;    const State *rest;    void dump() const {        if(rest) {            cout << ' ' << v;            rest->dump();        } else {            cout << endl;        }    }    State() : v(0), rest(0) {}    State(int _v, const State &_rest) : v(_v), rest(&_rest) {}};void ss(int *ip, int *end, int target, const State &state) {    if(target < 0) return; // assuming we don't allow any negatives    if(ip==end && target==0) {        state.dump();        return;    }    if(ip==end)        return;    { // without the first one        ss(ip+1, end, target, state);    }    { // with the first one        int first = *ip;        ss(ip+1, end, target-first, State(first, state));    }}int main() {    int a[] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 };    int * start = &a[5];    int * end = start + sizeof(a) / sizeof(a[0]);    ss(start, end, 60, State());        system("pause");    return 0;}

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Честно казано не схващам идеята на този скрипт, а и май не генерира всички възможни комбинации.

Комбинации от фиксиран брой числа според мене най-лесно се генерират от for цикли.

#include <iostream.h>#define N 20int i,j,k,m;int main () {     for (i=1; i<=N; i++)          for (j=i+1; j<=N; j++)              for (k=j+1; k<=N; k++)                  for (m=k+1; m<=N; m++)                      cout << i << "  " << j << "  " << k << " " << m << endl;          system("pause");    }
  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

 

Честно казано не схващам идеята на този скрипт, а и май не генерира всички възможни комбинации.

Комбинации от фиксиран брой числа според мене най-лесно се генерират от for цикли.

Благодаря за бързият отговор. А може ли да се добавят само комбинациите от 4-те числя, които да отговарят на дадена сума да кажеме 60.

Редактирано от endlessroot (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Благодаря за бързият отговор. А може ли да се добавят само комбинациите, които да отговарят на дадена сума да кажеме 60.

Отфилтрирай ги накрая. Т.е. ако сумата не ти съвпада не печаташ.

П.П. Кодът на C++ не е скрипт.

Редактирано от flare (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.