Здесь я пытаюсь использовать встроенную функцию сортировки. ‘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;
}
Задача ещё не решена.
Других решений пока нет …