题目
7个晶体管上的灯的亮暗可以组成0-9的任意一个数字。假设有n组晶体管,每组晶体管中至少有一个亮,可能存在坏了的晶体管。
假设有2组晶体管,第一组是数字2,因为有坏了的可能, 2->2,2->8;其可能为2/8;第2组是数字4,其可能为3/8/9
由此可以组成{23,28,29,83,88,89}
input:n个7位数,即有n组晶体管
output:组成的数字,例如本题的{23,28,29,83,88,89}
面试思路
- 得到残缺的数字中的暗的晶体管,若包含正常数字的所有暗的晶体管,则可以变成这个数字。用set
- 得到数字之后全排列就可以得到答案
- 但是没有写出来
提示
- 数字位运算(&)就可以得到是否包含
例如:2 (1011011) 只有2和5为暗,其他为亮
8 (1111111) 全亮
2 & 8 (每一位按位与)= 2 (则可以由2拓展到8)
- 每一组晶体管都有一系列可以拓展的值(dfs,回溯)
代码
//tag: dfs,回溯,位运算
#include<bits/stdc++.h>
using namespace st