题目描述:原题链接
思路:
因为A(8 8)也就大概5000种情况,所以直接按字典序全排列,知道找到匹配的情况。
#include<iostream>
#include<algorithm>
#include<string>
#include<cmath>
using namespace std;
int main()
{
string cow[8]={"Beatrice","Belinda","Bella","Bessie","Betsy","Blue","Buttercup","Sue"};
string a[2020],b[2020],none;
int n;
cin>>n;
for(int i=0; i<n; i++)
cin>>a[i]>>none>>none>>none>>none>>b[i];
do
{
int flag=1;
for(int i=0; i<n; i++)
{
int c1,c2;
for(int j=0; j<8; j++)
{
if(a[i]==cow[j])
c1=j;
if(b[i]==cow[j])
c2=j;
}
if(abs(c1-c2)!=1)
{
flag=0;
break;
}
}
if(flag==1)
{
for(int i=0; i<8; i++)
cout<<cow[i]<<endl;
return 0;
}
}while(next_permutation(cow,cow+8));
return 0;
}