#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
#define N 100010
string s[N];
bool cmp(string s1,string s2){
return s1<s2;
}
int main(){
int i,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
cin>>s[i];
sort(s+1,s+1+n,cmp);
for(i=1;i<=n;i++)
cout<<s[i]<<endl;
return 0;
}
题目就是从小到大排序 用string会TLE..
而用char就可以通过了。。这是为什么?
struct Register{
char c[25];
}s[N];
bool cmp(Register s1,Register s2){
return strcmp(s1.c,s2.c)<0;
}
int main(){
int i,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%s",s[i].c);
sort(s+1,s+1+n,cmp);
for(i=1;i<=n;i++)
printf("%s\n",s[i].c);
return 0;
}
还有,,为什么用string排的时候,不能直接用sort(),还要写比较函数?感觉没差。。但是后几组数据会RE。。还是别的地方错了?![](http://tb2.bdstatic.com/tb/editor/images/face/i_f15.png?t=20140803)
#include <string>
#include <algorithm>
using namespace std;
#define N 100010
string s[N];
bool cmp(string s1,string s2){
return s1<s2;
}
int main(){
int i,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
cin>>s[i];
sort(s+1,s+1+n,cmp);
for(i=1;i<=n;i++)
cout<<s[i]<<endl;
return 0;
}
题目就是从小到大排序 用string会TLE..
而用char就可以通过了。。这是为什么?
struct Register{
char c[25];
}s[N];
bool cmp(Register s1,Register s2){
return strcmp(s1.c,s2.c)<0;
}
int main(){
int i,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%s",s[i].c);
sort(s+1,s+1+n,cmp);
for(i=1;i<=n;i++)
printf("%s\n",s[i].c);
return 0;
}
还有,,为什么用string排的时候,不能直接用sort(),还要写比较函数?感觉没差。。但是后几组数据会RE。。还是别的地方错了?
![](http://tb2.bdstatic.com/tb/editor/images/face/i_f15.png?t=20140803)