没啥子好说的,菜鸡一个,dfs
#include<iostream>
using namespace std;
int n,t;
int arr[44],a[44],b[44];//首先,做题先看内存,爆了。。。三个数组,存最初数据和两个子数据
int dfs(int aa,int bb,int ar)//三个指针,
{
if(aa>t/2||bb>t/2) return 0;
if(ar>t) return 1;//dfs先写跳出递归条件
if(arr[ar]==a[bb+1])
{
b[bb+1]=arr[ar];
if(dfs(aa,bb+1,ar+1))
{ //然后就是注意回溯,aabb啥的最开始用的++,然后回溯不方便
return 1;
}
}
a[aa+1]=arr[ar]; //自己体会吧,我参考大佬的代码,然后虽然能过一部分,但在百分之80卡了好久,最后比较迷茫的过了
return dfs(aa+1,bb,ar+1);
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n;
for(int i=0;i<n;i++)
{
cin>>t;
for(int k=1;k<=t;k++)
{
cin>>arr[k];
}
a[1]=arr[1];
if(dfs(1,0,2)) cout<<"Frederica Bernkastel"<<endl;
else cout<<"Furude Rika"<<endl;
}
return 0;
} 
京公网安备 11010502036488号