G.Livestock Lineup
题目描述
有八头有名字的牛,要求在满足限制条件的同时尽可能按照字典序从小到大输出他们的名字,限制条件的格式类似“ a牛 要在 b牛 旁边”这样。
题目分析
参考dl的代码后发现,有一个神奇的函数next_permutation(),可以让原序列变成离原序列最近而字典序又大于原序列的序列(语文能力有限见谅,想了解可看看大佬的博客)。
这题只有8头牛,最多也就4w左右种序列(8的阶乘),可以直接利用该函数列出可能的序列,再用限制条件判断,即可找出答案。
//本来还想一个个分别排好,思路混乱写了100行还是没过,丢人…
代码
#include <bits/stdc++.h>
using namespace std;
char cow[8][11]={
"Beatrice","Belinda","Bella","Bessie","Betsy","Blue","Buttercup","Sue"};
struct beside{
int a;
int b;
};
beside be[8</