蒟蒻求助!!代码有小毛病!!
查看原帖
蒟蒻求助!!代码有小毛病!!
1179393
Noldo楼主2024/3/14 16:32
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int n;
bool vis[1005];
int nums[10] = {6,2,5,5,4,5,6,3,7,6};
int arr[25];
int cnt = 0;
int Nums(int n) {
    if (n <= 9)return nums[n];
    else {
        int sum = 0;
        while (n % 10 != 0) {         
            sum += nums[n % 10];
            n = n / 10;
        }
        return sum;
    }
}
void dfs(int x,int sum) {
    if (x>3) {
        if (arr[1] + arr[2] == arr[3] &&sum==n-4) { 
            cnt++; 
            for (int i = 1; i <= 3; i++)cout << arr[i] << " ";
            cout << endl;
        }
        return;
    }
    if (sum > n - 4)return;
    for (int i = 0; i <= n-4; i++) {
            arr[x] = i;
            dfs(x + 1,sum+Nums(i));
            arr[x] = 0;
    }
}
int main() {
    cin >> n;
    dfs(1,0);
    cout << cnt;
    return 0;
}

我在这个代码里加入了输出每次组合的功能,会发现总是多输出了几个超过火柴数的输出

2024/3/14 16:32
加载中...