一个问题
查看原帖
一个问题
38636
寒冰大大楼主2020/8/4 19:33

在这道题中,如果是用了基数排序的话写法有两种

一种是

	for(i=1;i<=tot;i++) cnt[rk[i]=len[i]]++;
	for(i=1;i<=n;i++) cnt[i]+=cnt[i-1];
	for(i=tot;i;i--) sa[cnt[rk[i]]--]=i;

还有一种是

  for (int i=1;i<=tot;i++) c[T[i].val]++;
       for (int i=1;i<=len;i++) c[i]+=c[i-1];
       for (int i=1;i<=tot;i++) id[c[T[i].val]--]=i;

这两段代码变量的意义都一样,但是循环一个是正着做一个是倒着做(蒟蒻并没有想通为什么可以正着做)

所以问一下是数据水没卡这种排序还是两种排序都是正确的

2020/8/4 19:33
加载中...