【发布时间】:2020-07-10 15:45:43
【问题描述】:
我在大学编译器上通过了 4 次测试,问题是第 5 次。每次测试的时间限制为 1 秒。如何优化此代码,如果我比较字符串,也许有更好的排序选择?我的代码:
#include <iostream>
#include <string.h>
using namespace std;
void qsort(string &tab, int min, int max)
{
if(min<max)
{
int min_min = min;
for(int i=min+1;i<=max;i++)
{
if(tab[i]<tab[min])
{
swap(tab[++min_min],tab[i]);
}
}
swap(tab[min],tab[min_min]);
qsort(tab,min,min_min-1);
qsort(tab,min_min+1,max);
}
}
bool sprawdz(string tab,string tab2)
{
for(int i=0;i<tab.length();i++)
{
if(tab[i]!=tab2[i])
{
return false;
break;
}
}
return true;
}
int main()
{
string tablica1, tablica2;
int ile;
scanf("%d",&ile);
for(int i=0;i<ile;i++)
{
cin>>tablica1>>tablica2;
qsort(tablica1,0,tablica1.length()-1);
qsort(tablica2,0,tablica2.length()-1);
if(tablica1==tablica2)
{
printf("TAK\n");
}
else
{
printf("NIE\n");
}
}
return 0;
}
它抛出的唯一信息是 min = 25177 最大值 = 25978 所以这些数字相当大。有任何想法吗?任务是检查单词是否是字谜。
【问题讨论】:
-
如果允许的话,不要按值传递字符串并使用
std::sort -
算法被禁止,不按值传字符串是什么意思?
-
@BartekJuśkiewicz 他们的意思是:改用引用。
-
我指的是
bool sprawdz(string tab,string tab2),但您似乎没有使用该功能 -
哦对了,这个功能没用,我删了
标签: c++ sorting optimization quicksort