蓝桥杯(七段码,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;
}
相关推荐
StarRocks_labs7 分钟前
StarRocks 接入 Paimon C++:让湖上查询进入原生执行链路
starrocks·c++·sql·jni·paimon·auto·湖上查询
垆边人似月.15 分钟前
华为题:字符串中最长连续数字串
开发语言·c++·算法
_不会dp不改名_17 分钟前
leetcode_3273 数位平方和的最大值
算法·leetcode·职场和发展
罗湖老棍子19 分钟前
座位安排(洛谷-P2071)
c++·算法·图论·匈牙利算法·二分图匹配
IOT那些事儿36 分钟前
C++17和20版本差异
c++·mingw·msvc
垆边人似月.40 分钟前
华为题:任务调度
数据结构·c++·算法
局部有解1 小时前
Leetcode - 42 接雨水(一维)
数据结构·c++·算法·leetcode
fpcc1 小时前
c++20新功能—std::osyncstream
c++·c++20
H.莓飛1 小时前
【C++】模板初阶
linux·开发语言·c++·visual studio
十五年专注C++开发1 小时前
基于Asio2实现http服务器的实践总结(二)
服务器·c++·http·asio2