Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   поиск значения по номеру (https://forum.antichat.xyz/showthread.php?t=194065)

Byte_ 06.04.2010 20:53

поиск значения по номеру
 
Добрый всем вечер!
Есть интересная мысль, но не получается один алгоритм, прошу помощи.
Задача такая:
есть некоторый словарь A=['a','s','d','f','g','h''j','k','l',';'] - это массив любой длинны (длина массива L) и любого содержания, есть комбинация из N элементов этого массива.
и того у нас есть N^L комбинаций
если длина комбинации, например, 2 то:
Код:

aa
as
ad
af
ag
ah
aj
ak
al
a;
sa
ss
sd
sf
.....

И нужно по номеру комбинации (например 15) найти саму комбинацию.

Для такого числа это на глаз понятно, но речь идёт о дине комбинации > 20, а массива A > 40.

Нужна формула...

cheater_man 06.04.2010 21:09

Соурс давай, тут тебе не экстрасенсы :D

Byte_ 06.04.2010 21:33

cheater_man, =) к сожалению, что-бы начинать писать данный код мне нужна формула. без неё вся идея коту под хвост. прям загадка - второй день голову ломаю.

M_script_ 06.04.2010 22:17

Byte_, все не так сложно как кажется
_http://ru.wikipedia.org/wiki/Позиционная_система_счисле ния

cheater_man 06.04.2010 22:24

Типо этого что-ли?
яп С#.net
Код:

using System;
using System.Collections.Generic;
using System.Text;

namespace brute1
{
    class Program
    {
        public char[] mass ={'a','b','c','d' };
        static void Main(string[] args)
        {
            Program pr = new Program();
            for (int i = 0; i<pr.mass.Length; i++)
            {
                for (int j = 0; j <pr.mass.Length; j++)
                {
                    Console.WriteLine("->" + pr.mass[i] + pr.mass[j]);
                }
            }
            Console.ReadLine();
        }
    }
}


0kt0ber 07.04.2010 00:13

C#
Код:

...
Dictionary<int, string> myDict = new Dictionary<int, string>();
...
myDict.add(1,"Первый");
myDict.add(2,"Второй");
...
myDict.add(100,"Сотый");
...

Console.WriteLine(myDict[3]);

Выведет на консоль "Третий".

cheater_man 07.04.2010 00:18

Да вот правильно говорит 0kt0ber ArrayList нужно создавать! С ним попроще будет ;)

M_script_ 07.04.2010 00:44

cheater_man, 0kt0ber, вы хотите все возможные комбинации сначала сгенерировать и пронумеровать, чтобы потом получить нужную комбинацию по номеру? )

cheater_man 07.04.2010 00:52

Цитата:

Сообщение от M_script_
cheater_man, 0kt0ber, вы хотите все возможные комбинации сначала сгенерировать и пронумеровать, чтобы потом получить нужную комбинацию по номеру? )

нет нумеровать не обязательно, если через ArrayList делать, он сам пронумерует.Просто генерим комбинацию и записываем в массив ;)

M_script_ 07.04.2010 01:17

Цитата:

Сообщение от cheater_man
Просто генерим комбинацию и записываем в массив ;)

Цитата:

речь идёт о дине комбинации > 20, а массива A > 40.
А ничего, что 20^40 == 1,099511627776e+52 ? :D


Время: 09:41