蓝桥杯(七段码,C++)

思路:

1、把灯管的连接转为图结构,相邻的灯管即认为有边。

2、用深度搜索,去计算有多少种不同字符。

3、因为有每种字符都会重复算两遍,最后的结果需要数以2。

cpp 复制代码
#include <iostream>
using namespace std;
 int graph[7][7] = {//转化成图
      {1,1,0,0,0,1,0},
      {1,1,1,0,0,0,1},
      {0,1,1,1,0,0,1},
      {0,0,1,1,1,0,0},
      {0,0,0,1,1,1,1},
      {1,0,0,0,1,1,1},
      {0,1,1,0,1,1,1}
    };
int book[7] = { 0 };//记录灯管是否被点亮
int dfs(int n, int i) //本灯管亮后可能构成几种字符=下一根灯管亮+其连通分支的数量
{
    int sum = 1;
    for (int k = 0; k < n; k++)
    {
        if (graph[i][k] == 1 && book[k] == 0)
        {
            book[k] = 1;
            sum+=dfs(7, k);
            book[k] = 0;
        }
    }
    return sum;
}
int main()
{
    cout << dfs(7, 0) / 2;
    return 0;
}
相关推荐
虾球xz8 分钟前
游戏引擎学习第315天:取消排序键的反向顺序
开发语言·c++·学习·游戏引擎
闻缺陷则喜何志丹27 分钟前
【强连通分量 拓扑序】P9431 [NAPC-#1] Stage3 - Jump Refreshers|普及+
c++·算法·图论·拓扑序·洛谷·强连通分量
大白爱琴33 分钟前
C++ 精简知识点
开发语言·c++
忘梓.1 小时前
AVL树的平衡艺术:用C++写出会“站立”的二叉树(未完待续)
开发语言·c++·oracle
程序猿小D2 小时前
第30节 Node.js C/C++ 插件
c语言·c++·后端·node.js·vim
liulilittle2 小时前
通过高级处理器硬件指令集AES-NI实现AES-256-CFB算法。
linux·服务器·c++·算法·安全·加密·openssl
机器视觉知识推荐、就业指导10 小时前
C++/Qt 联合编程中的定时器使用陷阱:QObject::startTimer 报错详解
c++·qt
慢半拍iii10 小时前
数据结构——D/串
c语言·开发语言·数据结构·c++
潘小磊11 小时前
高频面试之5Kafka
面试·职场和发展
邪恶的贝利亚11 小时前
从基础到实战-rmpt to webrtc
c++·webrtc·rtmp·流媒体