火柴棍拼数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;
}