inlineintget_first(int n){//123//12//1while(n /10){
n /=10;}return n;}
get_last()
inlineintget_last(int n){return n %10;}
dfs()
//####################预处理部分constint N =100000;int n;int res =0;int nums[N];//####################//i表示选择的位置,pre表示前一个数字,cnt表示统计的答案数量inlinevoiddfs(int i,int pre,int cnt){if(i >= n){
res =max(res, cnt);return;}if(pre ==-1||get_last(pre)==get_first(nums[i])){dfs(i+1, nums[i], cnt+1);}dfs(i+1, pre, cnt);//不选择的情况}
全部
//【蓝桥杯】--接龙序列DFS做法#include<iostream>
using namespace std;inlineintget_first(int n){//123//12//1while(n /10){
n /=10;}return n;}inlineintget_last(int n){return n %10;}constint N =100000;int n;int res =0;int nums[N];//i表示选择的位置,pre表示前一个数字,cnt表示统计的答案数量inlinevoiddfs(int i,int pre,int cnt){if(i >= n){
res =max(res, cnt);return;}if(pre ==-1||get_last(pre)==get_first(nums[i])){dfs(i+1, nums[i], cnt+1);}dfs(i+1, pre, cnt);//不选择的情况}intmain(){
cin >> n;for(int i =0; i < n; i++){
cin >> nums[i];}dfs(0,-1,0);
cout << n - res << endl;}