在写算法中,如果不想使用结构体,但是例如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() 即可。
非常之方便~~