思路分析:
先分析一下题意:通过翻转变换,让已知的纸条变为理想的纸条,求是否能实现。
看到题目的要求,很容易想到这道题要用 dfsdfsdfs。
数据范围:70 % 的数据 N <= 10 (良心啊)爆搜就能过。
100 %数据 : N <= 15 这就需要一点点技巧了。
解题技巧:
考虑操作的等效性,发现枚举翻折线时,只需要枚举前半部分的翻折线,因为当翻折线在后半部分的时候,就相当于先整体翻折,翻折线就到了前面。
最后统计答案的时候,考虑这个数组,如果回文序列和目标纸条相同也算可以做到。
代码+解释:
#include<bits/stdc++.h>
using namespace std;
inline int read(){//快读不解释
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch == '-') f=-1 ; ch=getchar();}
while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)&#