题解 P5833 【[USACO19DEC]Livestock Lineup B】
Yellow_Lemon_Tree · · 题解
先输入,然后字典序排序,由于n<=7,就把所有可能全排一遍,然后判断是否符合规则,符合输出,不符合继续,我用了STL。
不多说,上题解!
#include<bits/stdc++.h>
using namespace std;
vector <string> cows,st_a,st_b;
int n;
int find(string c)
{
for(int i=0;i<8;i++)
{
if(cows[i]==c) return i;
}
return -1;
}
bool sati()
{
for(int i=0;i<n;i++)
{
if(abs(find(st_a[i])-find(st_b[i]))!=1) return false;
}
return true;
}
int main()
{
cows.push_back("Beatrice");
cows.push_back("Belinda");
cows.push_back("Bella");
cows.push_back("Bessie");
cows.push_back("Betsy");
cows.push_back("Blue");
cows.push_back("Buttercup");
cows.push_back("Sue");
cin>>n;
string a,b,t;
for(int i=0;i<n;i++)
{
cin>>a;
cin>>t;
cin>>t;
cin>>t;
cin>>t;
cin>>b;
st_a.push_back(a);
st_b.push_back(b);
}
do{
if(sati()){
for(int i=0;i<8;i++) cout<<cows[i]<<endl;
break;
}
}
while(next_permutation(cows.begin(),cows.end()));
return 0;
}
希望能过!
记得点个赞!