可能是C++原理问题(?)
  • 板块学术版
  • 楼主IceYukino
  • 当前回复6
  • 已保存回复6
  • 发布时间2022/12/29 17:26
  • 上次更新2023/10/24 06:12:37
查看原帖
可能是C++原理问题(?)
214538
IceYukino楼主2022/12/29 17:26

就是我有两个代码:

一个过了:

	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;}
};
2022/12/29 17:26
加载中...