就是我有两个代码:
一个过了:
node u;
while(!q.empty()){
u=q.top();
q.pop();k--;
if(!k){
cout<<u.s<<endl;
return 0;
}
if(u.nxt==n) continue;
u.s+=s[u.nxt];u.nxt++;
q.push(u);
}
一个T:
while(!q.empty()){
node u=q.top();
q.pop();k--;
if(!k){
cout<<u.s<<endl;
return 0;
}
if(u.nxt==n) continue;
u.s+=s[u.nxt];u.nxt++;
q.push(u);
}
两者唯一的区别就是u的定义,一个是在循环里定义的,一个是在外面定义。外面定义就能过,并且快的不是一点半点,有人能解释一下吗。
node定义:
struct node{
int nxt;
string s;
bool operator<(const node&b) const{return s>b.s;}
};