题解
2023-08-13 22:07:57
发布于:四川
1阅读
0回复
0点赞
这道题用非常简单,考察全排列。
思路:用 next_permutation 函数模拟字典序从小到大的情况,然后用 map 存放序号,判断顺序是否符合要求。
代码:
#include <iostream>
#include <map>
#include <algorithm>
using namespace std;
string s[10]={"Beatrice","Belinda","Bella","Bessie","Betsy","Blue","Buttercup","Sue"},sen[10][10];
int n,cnt,flag;
map<string,int>m;
int main(){
for (int i=0;i<8;i++){
m[s[i]]=i;
}
cin >> n;
for (int i=0;i<n;i++){
for (int j=0;j<6;j++){
cin >> sen[i][j];
}
}
while (cnt<=43200){
flag=0;
++cnt;
for (int i=0;i<n;i++){
if (abs(m[sen[i][0]]-m[sen[i][5]])!=1){
flag=1;
break;
}
}
if (!flag){
break;
}
next_permutation(s,s+8);
for (int i=0;i<8;i++){
m[s[i]]=i;
}
}
for (int i=0;i<8;i++){
cout<<s[i]<<endl;
}
return 0;
}
全部评论 1
别抄题解哦
2023-08-14 来自 四川
0
有帮助,赞一个