蓝桥杯(七段码,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;
}
相关推荐
basketball6166 分钟前
设计模式入门:3. 适配器模式详解 C++实现
c++·设计模式·适配器模式
程序大视界25 分钟前
【C++ 从基础到项目实战】C++(二):数组、字符串与结构体——组织数据的容器
开发语言·c++·cpp
叶子野格43 分钟前
《C语言学习:文件操作》16
c语言·开发语言·c++·学习·visual studio
Lumbrologist1 小时前
【C++】零基础入门 · 第 17 节:多线程编程基础
java·c++·算法
A_humble_scholar2 小时前
C++11 学习笔记:统一初始化、右值引用与完美转发
c++·笔记·学习
叶子野格2 小时前
《C语言学习:位运算》17
c语言·开发语言·c++·学习·visual studio
晚风吹红霞3 小时前
C++ stack 和 queue 完全指南:适配器模式与双端队列的奥秘
c++·算法·适配器模式
casual~3 小时前
十六届蓝桥杯国赛个人题解
经验分享·学习·算法·蓝桥杯
代码改善世界3 小时前
【C++进阶】红黑树模拟实现mymap和myset
开发语言·c++
断点之下3 小时前
从C的struct到C++的class:封装、this指针、三大特性入门
开发语言·c++