• 字符序列


    today’s 回溯2333

    问题描述

    从三个元素的集合 [ABC][A,B,C] 中选取元素生成一个 NN 个字符组成的序列,使得没有两个相邻字的子序列(子序列长度=2)相同。例:N=5N=5时 ABCBA 是合格的,而序列 ABCBCABABC 是不合格的,因为其中子序列BCAB是相同的。

    对于由键盘输入的 N(1N12)N(1≤N≤12),求出满足条件的 NN 个字符的所有序列和其总数。

    输入格式

    一行,一个整数 NN。

    输出格式

    一个整数,即满足条件的序列总数。

    样例一

    input

    4
    

    output

    72
    

    数据范围与约定

    时间限制:          1s1s

    内存限制: 256MB256MB

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int n;
     4 int ans;
     5 int d[20];
     6 void search (int n,int k=0){
     7     if(n==k) {
     8         ans++;
     9         return ;
    10     }
    11     for(char ss='A';ss<='C';ss++){
    12         d[k]=ss;
    13         bool aaa=true;
    14         if(k>2 && d[k]==d[k-2] && d[k-1]==d[k-3]) aaa=false;
    15         if(aaa) search (n,k+1);
    16     }
    17 }
    18 int main(){
    19     cin>>n;
    20     search(n);
    21     cout<<ans<<endl;
    22     return 0;
    23 }
  • 相关阅读:
    进程和线程
    分治算法
    MySQL-IN和Exists区别
    Java-悲观锁和乐观锁
    Spring如何解析Dubbo标签
    Java平台标准版本
    java常用的框架
    状态码
    算法
    java.c++.c#.c的区别
  • 原文地址:https://www.cnblogs.com/luv-letters/p/8568603.html
Copyright © 2020-2023  润新知