NC14132. 贝伦卡斯泰露
描述
输入描述
第一行,一个正整数T,表示数据组数。接下来T组数据,每组数据的第一行,一个正整数n,第二行𝑛个正整数A𝑖。
输出描述
每组数据输出一行,如果可以完成,输出Frederica Bernkastel,否则输出Furude Rika。
示例1
输入:
3 4 1 1 2 2 6 1 2 3 4 5 6 4 1 2 2 1
输出:
Frederica Bernkastel Furude Rika Furude Rika
C++14(g++5.4) 解法, 执行用时: 4ms, 内存消耗: 608K, 提交时间: 2020-03-30 20:57:46
#include<iostream> using namespace std; int a[41],b[41],c[41],t,n; bool dfs(int i,int j,int id){ if(i>n/2||j>n/2) return 0; if(id>n) return 1; if(a[id]==b[j+1]){ c[j+1]=a[id]; if(dfs(i,j+1,id+1)) return 1; } b[i+1]=a[id]; return dfs(i+1,j,id+1); } int main(){ cin>>t; while(t--){ cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; b[1]=a[1]; puts(dfs(1,0,2)?"Frederica Bernkastel":"Furude Rika"); } return 0; }
C++(clang++ 11.0.1) 解法, 执行用时: 3ms, 内存消耗: 412K, 提交时间: 2023-07-04 16:12:12
#include<iostream> using namespace std; int a[41],b[41],c[41],t,n; bool dfs(int i,int j,int k){ if(i>n/2||j>n/2) return 0; if(k>n) return 1; if(a[k]==b[j+1]){ c[j+1]=a[k]; if(dfs(i,j+1,k+1)) return 1; } b[i+1]=a[k]; return dfs(i+1,j,k+1); } int main(){ cin>>t; while(t--){ cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; b[1]=a[1]; puts(dfs(1,0,2)?"Frederica Bernkastel":"Furude Rika"); } return 0; }