社区讨论

可能是C++原理问题(?)

学术版参与者 4已保存回复 6

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
6 条
当前快照
1 份
快照标识符
@lo3ge7ej
此快照首次捕获于
2023/10/24 06:12
2 年前
此快照最后确认于
2023/10/24 06:12
2 年前
查看原帖
就是我有两个代码:
一个过了:
CPP
	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:
CPP
	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定义:
CPP
struct node{
	int nxt;
	string s;
	bool operator<(const node&b) const{return s>b.s;}
};

回复

6 条回复,欢迎继续交流。

正在加载回复...