蓝桥杯(七段码,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;
}
相关推荐
洛水水5 小时前
【力扣100题】30.二叉树的直径
算法·leetcode·职场和发展
REDcker5 小时前
C++变量存储与ELF段布局详解 从const全局到rodata与nm_readelf验证实践
java·c++·面试
王老师青少年编程8 小时前
csp信奥赛C++高频考点专项训练之字符串 --【字符串排序】:合并序列
c++·字符串·csp·高频考点·信奥赛·字符串排序·合并序列
handler018 小时前
UDP协议与网络通信知识点
c语言·网络·c++·笔记·网络协议·udp
神仙别闹9 小时前
基于QT(C++)实现学生成绩管理系统
数据库·c++·qt
凯瑟琳.奥古斯特9 小时前
假脱机技术原理详解
开发语言·职场和发展
洛水水10 小时前
【力扣100题】31.二叉树的层序遍历
算法·leetcode·职场和发展
君义_noip10 小时前
CSP-S 2025 入门级 第一轮(初赛) 完善程序(1)
c++·算法·信息学奥赛·初赛·csp 第一轮
洛水水10 小时前
【力扣100题】41.爬楼梯
算法·leetcode·职场和发展
蜡笔小马11 小时前
07.C++设计模式-组合模式
c++·设计模式·组合模式