C++ pair使用案例(一)

在写算法中,如果不想使用结构体,但是例如BFS这样的算法会用到存储一对的情况,

我们可以考虑用pair

注意:需要头文件 map, 比utility容易记忆

使用案例

BFS 奇怪的电梯

题目选自洛谷P1135

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<map>
using namespace std;
int N,A,B;
int book[201];
int nt[201];
queue<pair<int,int> > q;
bool judge(int x){
	if(book[x] != 1 && x > 0 && x <= N) return true;
	return false;
}
int bfs(int s){
	q.push(make_pair(s,0)); book[s] = 1;
	while(!q.empty()){
		int f = q.front().first;
		if(f == B) return q.front().second;
		if(judge(f+f[nt])) {
			q.push(make_pair(f+f[nt],q.front().second+1));
			book[f+f[nt]] = 1;
		}
		if(judge(f-f[nt])){
			q.push(make_pair(f-f[nt],q.front().second+1));
			book[f-f[nt]] = 1;
		}
		q.pop();
	}
	return -1;
}
int main(){
	scanf("%d%d%d",&N,&A,&B);
	for(int i=1;i<=N;i++)
		scanf("%d",&nt[i]);
	int ans = bfs(A);
	printf("%d",ans);
	return 0;
}

 可以看到,我们在使用使,只需将queue里的类型 从 结构体类型 变成 pair类型,

然后我们在使用“一对”数据时,直接make_pair() 即可。

非常之方便~~

猜你喜欢

转载自blog.csdn.net/weixin_44572229/article/details/121728436
今日推荐