D. Nastya and Scoreboard

题目链接:https://codeforces.com/contest/1341/problem/D

题目大意:

一个数字我们可以用 7 个位置的LED管显示出来。 1 代表LED管亮, 0 代表LED管灭。

现在告诉你 n 个这样的东西并且给出它的每一个位置LED管的亮灭情况,允许你将 m 个灭的LED管点亮,问:你能组成的最大的数字是多少

想法:
直接 记忆话搜索 + 贪心就可以了

#include <algorithm>
#include <string>
#include <cstring>
#include <vector>
#include <map>
#include <stack>
#include <set>
#include <queue>
#include <cmath>
#include <cstdio>
#include <iomanip>
#include <ctime>
#include <bitset>
#include <cmath>
#include <sstream>
#include <iostream>

#define ll long long
#define ls nod<<1
#define rs (nod<<1)+1
#define pii pair<int,int>
#define mp make_pair
#define pb push_back
#define INF 0x3f3f3f3f3f3f3f3f
#define max(a, b) (a>b?a:b)
#define min(a, b) (a<b?a:b)


const double eps = 1e-10;
const int maxn = 2e3 + 10;
const int MOD = 998244353;

int sgn(double a) { return a < -eps ? -1 : a < eps ? 0 : 1; }

using namespace std;

string str[] = {"1110111", "0010010", "1011101", "1011011", "0111010", "1101011", "1101111", "1010010", "1111111", "1111011"};
char s[maxn][10];
int vis[maxn][maxn];
int a[maxn];
int n,k;

int change(int x,int y) {
    int cnt = 0;
    for (int i = 0;i < 7;i++) {
        if (s[x][i] == '0' && str[y][i] == '1')
            cnt++;
        if (s[x][i] == '1' && str[y][i] == '0')
            return -1;
    }
    return cnt;
}

void dfs(int cur,int res) {
    if (res < 0)
        return ;
    if (vis[cur][res])
        return ;
    vis[cur][res] = 1;
    if (cur == n + 1) {
        if (res == 0) {
            for (int i = 1;i <= n;i++) {
                cout << a[i];
            }
            cout << endl;
            exit(0);
        }
        return ;
    }
    for (int i = 9;i >= 0;i--) {
        int tmp = change(cur,i);
        if (tmp == -1)
            continue;
        a[cur] = i;
        dfs(cur+1,res-tmp);
    }
}

int main() {
    ios::sync_with_stdio(false);
    cin >> n >> k;
    for (int i = 1;i <= n;i++) {
        cin >> s[i];
    }
    dfs(1,k);
    cout << -1 << endl;
    return 0;
}
原文地址:https://www.cnblogs.com/-Ackerman/p/13177532.html