c++ 火柴棒等式

题目描述

给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A、B、C是用火柴棍拼出的整数(若该数非零,则最高位不能是0)。用火柴棍拼数字0-9的拼法如图所示:
c++ 火柴棒等式注意: 1. 加号与等号各自需要两根火柴棍 2. 如果A≠B,则A+B=C与B+A=C视为不同的等式(A、B、C>=0) 3. n根火柴棍必须全部用上

输入

共一行,又一个整数n(n<=24)。

输出

共一行,表示能拼成的不同等式的数目。

样例输入

14

样例输出

2

Source Code

#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;
}

原文链接: https://www.cnblogs.com/LJA001162/p/11339814.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    c++ 火柴棒等式

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/300774

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月15日 下午9:43
下一篇 2023年2月15日 下午9:43

相关推荐