蓝桥杯(七段码,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;
}
相关推荐
轩情吖6 分钟前
Qt容器类控件之QGroupBox与QTabWidget
开发语言·c++·qt·qgroupbox·qtabwidget·桌面级开发
客卿1237 分钟前
力扣二叉树简单题整理(第二集)
算法·leetcode·职场和发展
我命由我123458 分钟前
企业领域 - 跨部门轮岗
经验分享·笔记·学习·职场和发展·求职招聘·职场发展·学习方法
helloworldandy8 分钟前
C++安全编程指南
开发语言·c++·算法
源代码•宸13 分钟前
Leetcode—102. 二叉树的层序遍历【中等】
经验分享·后端·算法·leetcode·职场和发展·golang·slice
OnYoung14 分钟前
设计模式在C++中的实现
开发语言·c++·算法
zmzb010318 分钟前
C++课后习题训练记录Day85
开发语言·c++·算法
2301_8223663521 分钟前
C++中的协程编程
开发语言·c++·算法
m0_7369191021 分钟前
C++中的事件驱动编程
开发语言·c++·算法
热爱编程的小刘27 分钟前
Lesson03---类与对象(中篇)
c++