蓝桥杯(七段码,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;
}
相关推荐
hope_wisdom2 分钟前
C/C++数据结构之用数组实现队列
c语言·数据结构·c++·队列
近津薪荼7 分钟前
优选算法——双指针专题2(模拟)
c++·学习·算法
「QT(C++)开发工程师」7 分钟前
C++设计模式
开发语言·c++·设计模式
JnnRrfmk21 分钟前
四旋翼飞行器轨迹跟踪仿真 控制 路径规划与轨迹优化MATLAB四旋翼飞行器仿真无人机simul...
c++
what丶k22 分钟前
高级架构师面试核心题库(高级版)—— 附深度解析
面试·职场和发展
2501_9011478323 分钟前
四数相加问题的算法优化与工程实现笔记
笔记·算法·面试·职场和发展·哈希算法
uoKent24 分钟前
Qt C++项目基础
c++·qt
努力学算法的蒟蒻36 分钟前
day66(1.25)——leetcode面试经典150
面试·职场和发展
仰泳的熊猫1 小时前
题目1431:蓝桥杯2014年第五届真题-分糖果
数据结构·c++·算法·蓝桥杯
wanderist.1 小时前
蓝桥杯中的日期问题
c++·蓝桥杯