Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/16: Рейтинг темы: голосов - 16, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 06.10.2009
Сообщений: 27
1

Перестановки

10.12.2009, 14:06. Показов 3022. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Проблема заключаеся в следующем:
есть массив слов, а для каждого слова есть еще массив цифр.
Нужно перебрать все варианты.

Например, a[0].word='sffg',a[1].word='fdh', a[2].word='dfgfd',a[3].word='fgfg', a[4].word='fgfdg';
a[0].kol=3 - количество цифр для этого слова.
a[0].cifr[0]=3;
a[0].cifr[1]=3;
a[0].cifr[2]=1;

- это цифры для первого слова.
и т.д.

Должно получиться что-то типа (1,1,1,1) (1,1,1,2) (1,1,1,3) ....(3,3,3,3)
то есть (a[o].cifr[0], a[1].cifr[0], a[2].cifr[0], a[3].cifr[0]) и т.д.

Помогите как это сделать.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.12.2009, 14:06
Ответы с готовыми решениями:

Перестановки цифр
Добрый день! Дано одно натуральное четырехзначное число. Найдите самое большое число, полученное...

Шифры перестановки
шифр, преобразования из которого изменяют только порядок следования символов исходного тексто, но...

Шифр перестановки
Подскажите пожалуйста с кодом. Известна пара элементов ключа (4ххх5), ключ это нумерация...

Шифр перестановки
проблемка такая. сделал зашифровку текста по ключу. но расшифровка никак не выходит. прилагаю...

10
153 / 113 / 25
Регистрация: 23.06.2008
Сообщений: 320
11.12.2009, 13:28 2
Цитата Сообщение от ButeR Посмотреть сообщение
Проблема заключаеся в следующем:
есть массив слов, а для каждого слова есть еще массив цифр.
Нужно перебрать все варианты.

Например, a[0].word='sffg',a[1].word='fdh', a[2].word='dfgfd',a[3].word='fgfg', a[4].word='fgfdg';
a[0].kol=3 - количество цифр для этого слова.
a[0].cifr[0]=3;
a[0].cifr[1]=3;
a[0].cifr[2]=1;

- это цифры для первого слова.
и т.д.

Должно получиться что-то типа (1,1,1,1) (1,1,1,2) (1,1,1,3) ....(3,3,3,3)
то есть (a[o].cifr[0], a[1].cifr[0], a[2].cifr[0], a[3].cifr[0]) и т.д.

Помогите как это сделать.
см
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
string s = "";
 
for(int i = 0; i < a.Length; i++)
{
   s += "("
   for(int j = 0; j < a[i].kol; j++)
   {
      s += a[i].cifr[j];
      if(a[i].kol - 1 != j)
      {
         s += ",";
      }
   }
   s += ")"
}
0
1 / 1 / 0
Регистрация: 06.10.2009
Сообщений: 27
11.12.2009, 14:26  [ТС] 3
Спасибо, но не то что нужно.
Получается что сначала в строчку алгоритм записывает все значения свойств для a[0], потом переходит к a[1] и т.д.

А надо чтоб брал первое значение свойства a[0], потом первое значение для a[1], и т.д.

Потом все то же самое, но вместо первого значения свойства для a[n], брал второе свойство и т.д.

например,
a[0].cifr[0], a[1].cifr[0],a[2].cifr[0],a[3].cifr[0],a[4].cifr[0],a[5].cifr[0]
a[0].cifr[0], a[1].cifr[0],a[2].cifr[0],a[3].cifr[0],a[4].cifr[0],a[5].cifr[1]
a[0].cifr[0], a[1].cifr[0],a[2].cifr[0],a[3].cifr[0],a[4].cifr[0],a[5].cifr[2]
a[0].cifr[0], a[1].cifr[0],a[2].cifr[0],a[3].cifr[0],a[4].cifr[1],a[5].cifr[0]
a[0].cifr[0], a[1].cifr[0],a[2].cifr[0],a[3].cifr[0],a[4].cifr[1],a[5].cifr[1] .

Вот что-то в этом роде. Да и со скобками зря заморачивался. Их не надо.
0
328 / 312 / 68
Регистрация: 05.11.2009
Сообщений: 712
11.12.2009, 15:17 4
как я понял по ваше задание, то должно получится что-то вроде этого
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
class Str
    {
        static string tmp = "";
 
        public void Write(ref List<string> input, int index)
        {
            for (int i = 0; i < input[index].Length; i++)
            {
                if (input.Count > index + 1)
                {
                    tmp += input[index][i];
                    Write(ref input, index + 1);
                    tmp = tmp.Remove(tmp.Length - 1);
                }
                else
                    tmp += input[index][i];
            }
            if (tmp.Length != 1)
                Console.WriteLine(tmp);
            tmp = tmp.Replace(input[index], "");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            List<string> input = new List<string>();
            input.Add("asdfgadadadadad");
            input.Add("qwertsdsdsd");
            input.Add("zxcvbsdasdasdadd");
            Str str = new Str();
            str.Write(ref input, 0);
        }
    }
если что ногами не пинать
0
1 / 1 / 0
Регистрация: 06.10.2009
Сообщений: 27
11.12.2009, 18:10  [ТС] 5
Тоже не то
0
328 / 312 / 68
Регистрация: 05.11.2009
Сообщений: 712
12.12.2009, 14:11 6
тогда выводите вместо символов их порядковые номера и всё...
0
1 / 1 / 0
Регистрация: 06.10.2009
Сообщений: 27
12.12.2009, 14:20  [ТС] 7
Попробую объяснить на примере
Код
for (int i=0; i<kslv; i++)
for (int j=0;j<wds[i].kanc; j++)
{
    здесь надо записать в какой-нибудь массив wds[i].inf[j], после этого не нужно увеличивать j, а нужно вернуться и увеличить i, а j должно также оставаться до некоторого времени, 
}
0
73 / 70 / 12
Регистрация: 01.11.2009
Сообщений: 246
12.12.2009, 14:30 8
сделать i j глобальными (хотя не обязательно), использовать break, j++ убрать из заголовка цикла и увеличивать его когда надо (условие или еще что-нибудь). Также начальное значение можно убрать из описания цикла
0
328 / 312 / 68
Регистрация: 05.11.2009
Сообщений: 712
13.12.2009, 10:48 9
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
public class MyString
{
        string str;
        int count;
        int[] index_word;
 
        public MyString(string input)
        {
            this.str = input;
            this.count = str.Length;
            this.index_word = new int[this.count];
            for (int i = 0; i < count; i++)
                index_word[i] = i + 1;
        }
 
        public int this[int idx]
        {
            get { return this.index_word[idx]; }
        }
 
        public string GetString
        {
            get { return this.str; }
        }
        public int Length
        {
            get { return index_word.Length; }
        }
 
        public override string ToString()
        {
            string result = "";
            for (int i = 0; i < index_word.Length; i++)
                result += index_word[i].ToString();
            return result;
        }
    } 
 
    class Str
    {
        static string tmp = "";
 
        public void Write(ref List<MyString> input, int index)
        {
            for (int i = 0; i < input[index].Length; i++)
            {
                if (input.Count > index + 1)
                {
                    tmp += input[index][i].ToString();
                    Write(ref input, index + 1);
                    tmp = tmp.Remove(tmp.Length - 1);
                }
                else
                {
                    tmp += input[index][i].ToString();
                    if (tmp.Length != 1)
                        Console.WriteLine(tmp);
                    tmp = tmp.Remove(tmp.Length - 1);
                }
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            List<MyString> input = new List<MyString>();
            input.Add(new MyString("asds"));
            input.Add(new MyString("qwer"));
            input.Add(new MyString("zxcv"));
            input.Add(new MyString("yuio"));
 
            Str str = new Str();
            str.Write(ref input, 0);
        }
}
оно должно работать так?
0
1 / 1 / 0
Регистрация: 06.10.2009
Сообщений: 27
13.12.2009, 10:57  [ТС] 10
Да
0
1 / 1 / 0
Регистрация: 06.10.2009
Сообщений: 27
13.12.2009, 14:05  [ТС] 11
Это то, что должно получится с цифрами, но у меня не цифры, а массивы, классы и т.д., так что, как сам решу, отпишусь
0
13.12.2009, 14:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.12.2009, 14:05
Помогаю со студенческими работами здесь

Перестановки и сортировка
Получить все перестановки из цифр 1, 2, 3, 4. Отсортировать их как десятичные числа по убыванию.

Шифр перестановки
Шифр с использованием магического квадрата 4*4 Помогите пожалуйста кто чем может)

Шифр перестановки
Здраствуйте. Проблема нарисовалась у меня. Делаю программу, которая шифрует строку случайной...

Дешифровка методом перестановки
Здравствуйте Нужна помощь в написании дешифратора (методом перестановки) с использованием...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru