На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> Сколько комбинаций в строке
    Добрый день!

    У меня есть вот такая задачка sad.gif :
    Есть объект CString : "aabcabac"
    Нужно посчитать сколько комбинаций из двух символов встречается в этой строке и занести это в динамически создаваемую двумерную матрицу. То есть для приведенного выше примера нужно сделать так:
    Цитата
    --a            b          c
    ------------------------------
    a    1            2          1
    ------------------------------
    b    1            0          1
    ------------------------------
    c    1            0          0

    То есть комбинация "аа" встречается 1 раз
    "ab" - 2
    "ac" - 1
    "ba" - 1
    "bb" - 0
    "bc" - 1
    и так далее
    Если кто поможет буду очень балгодарен
      в общемм случае.
      Cstring text="asdflkajsdflk";
      int** matrica=new int*[256];

      for (int i=0;i<256;i++)
      {
      matrica[i]=new int[256];
      memset(matrica[i],0,256*sizeof(int));
      }

      for(i=0;i<text.GetLength()-1;i++)
      {
      matrica[text[i]][text[i+1]]++;
      }

      все, теперь можно использовать эту матрицу. только в ней учтены не только символы латинского алфавита, а все абсолютно символы%)
        ну не фига себе матрица smile.gif 256x256xsizeof( int )

        думаю надо спец. функцию разработать, чтоб размер матрицы был пропорционален уникальным символам строки.
          Цитата
          Sazabis, 28.11.03, 12:07
          матрицы был пропорционален уникальным символам строки.

          А как это сделать?
            выкидываешь все повторяющиеся буквы, получаешь уникальную строку, не теряй ее (в памяти машины) пусть ее длина получилась LEN.

            Создаешь массив LENxLEN, ячейки по нулям.

            пробегаешь по строке, как у Demo_S, но инкрементируешь немного посложнее (для машины). ( пр. matrix[ i ][ j ]++ )В индекс i загоняешь индекс текущей буквы из уникальной строки, в индекс j загоняешь индекс следующей буквы из уникальной строки.

            Кажись все. cool.gif
            1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0176 ]   [ 15 queries used ]   [ Generated: 18.07.25, 23:11 GMT ]