Использую С++ Есть массив Code: char model[] = "1234567"; (в массиве могут быть не только цифры, они приведены для примера ) а так же массив Code: char test[7]; в нескольких циклах я перебираю через индекс 2 массива все элементы 1 массива тоесть зарание указанно Code: temp[0] = model[0]; temp[1] = model[0]; temp[2] = model[0]; temp[3] = model[0]; и в условие цикла указанно что как только первый элемент 2 массива полностью по очереди пройдет все элементы 1 массива то 2 элемент увеличивается на один элемент, а когда второй элемент дойдет до последнего элемента 1 массива на один элемент увеличивается значение 3 элемента ну вообщем вот чт получается Code: 1111 2111 3111 4111 5111 6111 7111 1211 2211 ... 7211 1311 2311 ... 7311 1411 ... 1511 ... 7511 ... 1611 2611 ... 7711 1121 2121 ... 4771 5771 6771 7771 1112 2112 3112 4112 и так далее. как вы понимаете что каждая комбинация цифр есть определённый номер то есть к примеру у получившейся комбинации 1111 будет под номером 1 2111 под номером 2 а у строчки 1211 номер 8 и так далее, но вот помогите придумать алгоритм при котором можно будет определить какая комбинация будет например под номером 300, но при этом не проходя все циклы? То есть можно ли как то зная все параметры к используемые в цикле высчитать что получится на определенной строчке? (то есть как узнать что на 300 строчке будет комбинация 6171 при моих условиях циклов не проходя все мои циклы?) Если можно то как? (Если поможете примером кода буду очень благодарен) Заранее извиняюсь если вопрос глупый или плохо объяснил чего хочу...
Ну как бы длинна модели = 7 символов и ты знаешь что пройдя 7 итераций будет temp[0]==model[0] temp[1]==model[1] пойдя 14 итераций я думаю будет temp[2]==model[1]. Уже какая никакая зависимость ) А вообще эта наука называется комбинаторика. гугли http://algolist.manual.ru/maths/combinat/index.php
Gar|k 7 символов взято для примера только, через такую зависимость можно высчитать если число комбинаций будет маленьким, а если номер комбинации будет за приделами нескольких миллионов то затрата времени слишком возрастает чтобы так пытаться определять...
N - номер строки M - масимальное число елемента K - максимальное количество елементов a1, a2, a3, a4, ... aK - елементы Универсальное уравнение: N = a1 + (a2-1) * M^1 + (a3-1) * M^2 + (a4-1) * M^3 + ... + (aK - 1) * M^K-1; Твой пример. Уравнение N = a1 + (a2-1) * M^1 + (a3-1) * M^2 + (a4-1) * M^3 Нахождения номера строки для елемента 1211 N = 1 + (2-1) * 7^1 + ( 1-1) * 7^2 + (1-1) * 7^3 = 1 + 7 + 0 + 0 = 8 100% работоспособность не гарантирую, решил в голове чисто математически, программно проверять лень. Код только за символическое вознаграждение, и наверно уже не сегодня. Мне в дорогу собираться нужно.
Jakeroid мне нужно наоборот узнавать что находится в определенной строке зная ее номер, а по твоей формуле зная элемент можно определить строку.
Что бы обратную написать, нужно деление по модулю юзать. Я подумаю, если что отпишусь. Не так силен в математике, что бы сразу решить.