Функция сортировки массива суффикса

Здесь я пытаюсь использовать встроенную функцию сортировки. ‘s’ — это массив, в котором хранится индекс. Я пытаюсь отсортировать этот массив в соответствии со строками суффикса. Если я использую функцию qsort (), она работает нормально. Но как только метод sort () сортирует массив, он не распознает сортировку по суффиксам в str. Пожалуйста, предложите мне подходящие изменения для функции сортировки. Функция qsort () обозначена в комментарии.
вот мой код

    string str;
int s[50005];
long long l;

// для qsort ()

int cmp(const void *a,const void *b)
{
return (strcmp((str+ *((int*)a)),(str+ *((int*)b))));
}

// для sort () это не работает нормально

int cmp1(int a,int b)
{
return (strcmp((str.c_str()+ a),(str.c_str()+ b)));
}

код для суффиксного массива

    void suffix_array(int n)
{
int i;
//initially 's' is initialized with all index
for(i=0;i<n;i++)
s[i]=i;

// qsort(s,n,sizeof(int),cmp); this works fine
sort(s,s+n,cmp1);

}

основная функция

    int main()
{
int n,c;
scanf("%d",&n);
while(n--) {
cin>>str;
//scanf("%s",str);
l = str.length();
suffix_array(l);

for(int i=0;i<l;i++)
cout<<s[i]<<" ";

}
return 0;
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]