关于#c++#的问题:火柴棍拼数0-9的拼法,给定五位整数n需要用多少根火柴棍拼的出来

火柴棍拼数0-9的拼法,给定五位整数n需要用多少根火柴棍拼的出来?

#include<bits/stdc++.h>
using namespace std;
int num[10001]={6,2,5,5,4,5,6,3,7,6};
int a[4],n,tmp,ans;
void dfs(int step,int sum)
{
    if(step == 3)
    {
        if(num[a[1] + a[2]] == n - sum) ans ++;
        return;
    }
    for(int i = 0;i <= 999;i ++)
        if(n - sum >= num[i])
        {
            a[step] = i;
            dfs(step + 1,sum + num[i]);
        }
}
int main()
{
    cin >> n;
    n = n - 4;
    for(int i = 10;i <= 9999;i ++)
    {
        tmp = i;
        while(tmp > 0)
        {
            num[i] += num[tmp % 10];
            tmp /= 10;
        }
    }
    dfs(1,0);
    printf("%d",ans);
    return 0;
}