dalao可以帮忙看看第三题逻辑哪里错了吗。。。
int nums[10] = {0,2,5,5,4,5,6,3,7,6};

int main() {
    int n, m;
    cin >> n >> m;
    vector<int> can(m);
    for (int i = 0; i < m; i++) {
        cin >> can[i];
    };
    sort(can.begin(), can.end(), greater<int>());
    vector<int> dp(1+n, 0);
    for (int i = 0; i < m; i++) {
        int x = can[i], cost = nums[x];
        for (int i = cost; i <= n; i++) {
            if (i - cost == 0 || dp[i - cost] != 0)
                dp[i] = max(dp[i], dp[i - cost] * 10 + x);
        }
    }
    cout << dp[n] << endl;
}