【高中数学/排列组合】由字母AB构成的一个6位的序列,含有连续子序列ABA的序列有多少个?

【问题】

由字母AB构成的一个6位的序列,含有连续子序列ABA的序列有多少个

【答案】

27个,具体如下:

复制代码
1.BBBABA
2.BBABAB
3.BBABAA
4.BBAABA
5.BABABB
6.BABABA
7.BABAAB
8.BABAAA
9.BAABAB
10.BAABAA
11.BAAABA
12.ABBABA
13.ABABBB
14.ABABBA
15.ABABAB
16.ABABAA
17.ABAABB
18.ABAABA
19.ABAAAB
20.ABAAAA
21.AABABB
22.AABABA
23.AABAAB
24.AABAAA
25.AAABAB
26.AAABAA
27.AAAABA

【解答】

这个问题先考虑总数,六个位置,每个位置两种选择,总共是2的6次方共64种选择;

这六十四种里,以ABA***为模式的有8种,*ABA**为模式的也有8种,**ABA*为模式的也有8种,***ABA为模式的还有8种,故总数不超过4*8=32种;

这三十二种里存在重复,如ABAABA可以出现在ABA***模式中,也可以出现在***ABA模式中,故总数小于31种;

如何再清除重复,我目前想到的办法是:把0~63的数字用二进制方式写出来,以1为A,以0为B,然后查看101出现的次数,下了一番笨功夫后,发现是27种。

为确保无误,我特地用程序跑了一遍,发现确实是27种!用Java编制的程序如下:

【程序】

复制代码
package test260101;

import java.util.Set;
import java.util.TreeSet;

/**
 * 由字母AB构成的一个6位的序列,含有连续子序列ABA的序列有多少个?
 * @author 逆火
 *
 */
public class Test {
    public static void main(String[] args) {
        Set<String> set = new TreeSet<>();// 用于清除重复
                
        for(int i=0;i<64;i++) {// 六位,每位两种选择,共64种
            String binaryString = Integer.toBinaryString(i);// 0~63转二进制数
            
            int n=6-binaryString.length();// 不足六位前补零
            for(int j=0;j<n;j++) {
                binaryString="0"+binaryString;
            }
            
            if(binaryString.contains("101")) {// 含有101即ABA的放入集合
                set.add(binaryString);
            }
        }
        
        int sn=0;
        for(String str:set) {
            str=str.replace("1", "A");// 以A替1
            str=str.replace("0", "B");// 以B替0
            System.out.println((++sn)+"."+str);// 输出序号及序列
        }
    }
}

【程序输出】

复制代码
1.BBBABA
2.BBABAB
3.BBABAA
4.BBAABA
5.BABABB
6.BABABA
7.BABAAB
8.BABAAA
9.BAABAB
10.BAABAA
11.BAAABA
12.ABBABA
13.ABABBB
14.ABABBA
15.ABABAB
16.ABABAA
17.ABAABB
18.ABAABA
19.ABAAAB
20.ABAAAA
21.AABABB
22.AABABA
23.AABAAB
24.AABAAA
25.AAABAB
26.AAABAA
27.AAAABA

【点评】

没找到好办法,硬列举发现是27种,但作业帮扫出来说是18种,不放心又来了一遍发现还是27种;

最后用程序跑出来发现确实是27种,请问作业帮对此怎么说?!

END

相关推荐
2401_894915533 小时前
GEO 优化源码全解析:从搜索引擎到 AI 引擎的底层改写逻辑
java·服务器·前端·数据库·人工智能·分布式·搜索引擎
Java牛马7 小时前
SpringBoot Starter 依赖相关总结
java·spring·springboot·starter·自动装配·依赖
吴声子夜歌7 小时前
Java面试——Spring Cloud原理及应用(二)
java·spring cloud·面试
东小西8 小时前
【SAA实战】第 1 篇:ReactAgent 入门——先撸个"会调工具的助手"跑起来
java·人工智能·spring
mqiqe9 小时前
AgentScope Java 2.0 协议集成全景解析:A2A、AG-UI、Agent Protocol 三大开放协议实战指南
java·开发语言·ui
脉动数据行情9 小时前
Java 实现台股 TWSE/TPEx 行情采集(个股 + K 线)
java·开发语言·twse·tpex·台股
月华路11 小时前
G1 GC 对数组与大对象(Humongous)的处理
java·jvm·算法
liangshanbo121511 小时前
虚拟列表深度面试题整理
java·开发语言·前端
gugucoding12 小时前
59. 【Java】Spring Boot 入门:第一个 Web 应用
java·开发语言·spring boot
10mAh13 小时前
【Java】HashMap 的 put 到底做了什么?——冲突、扩容与树化实测
java·开发语言·hash