搜索|Wannafly模拟赛3-B 贝伦卡斯泰露(DFS)

题目链接:https://www.nowcoder.com/acm/contest/13/B
题解:枚举两个序列的起点,直接爆搜即可。
【搜索|Wannafly模拟赛3-B 贝伦卡斯泰露(DFS)】

#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define ll long long #define inf 1000000000 #define mod 1000000007 #define maxn50 #define lowbit(x) (x&-x) #define eps 1e-9 int a[maxn],b[maxn],n,c[maxn],flag,used[maxn]; bool dfs(int x,int y,int num) { if(num==n/2) return 1; used[x]=used[y]=1; int xx=x+1,yy=y+1; while(xx<=n && used[xx]) xx++; while(1) { while(yy<=n && (used[yy] || xx==yy || a[xx]!=a[yy])) yy++; if(xx<=n && yy<=n) { if(dfs(xx,yy,num+1)) return 1; yy++; } else break; } used[x]=used[y]=0; return 0; } int main(void) { int T,i; scanf("%d",&T); while(T--) { flag=0; memset(used,0,sizeof(used)); scanf("%d",&n); for(i=1; i<=n; i++) scanf("%d",&a[i]); for(i=2; i<=n/2+1; i++) if(a[1]==a[i] && dfs(1,i,1)) { flag=1; break; } if(flag) printf("Frederica Bernkastel\n"); else printf("Furude Rika\n"); } return 0; }



    推荐阅读