随笔 - 16  文章 - 0 评论 - 0 阅读 - 57947
< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8

计算1-9总共九个数字可以满足abc+def=hij这样的式子;其中abcdefghij九个数字各个都不相同,它们都属于1-9个数字中;

首先,第一种方法很简单很暴力,直接枚举,这样的话时间复杂度高;

这种题其实和上一篇对1-num个数字进行全排列是一样的,只不过现在对排列加了一个条件abc+def=hij;

那么有深度优先遍历很简单,还是递归的思想;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/*************************************************************************
    > File Name: sum.cpp
    > Author:
    > Mail:
    > Created Time: 2015年11月13日 星期五 20时34分23秒
 ************************************************************************/
 
#include<iostream>
using namespace std;
const int MAXNUM = 10;
int box[MAXNUM];
int book[MAXNUM];
int count = 0;
 
void dfs(int step)
{
    if (step == MAXNUM){
        if (box[1]*100+box[2]*10+box[3] + box[4]*100+box[5]*10+box[6] == box[7]*100+box[8]*10+box[9]){
            cout << box[1] << box[2] << box[3] << "+" << box[4] << box[5] << box[6] << "="
                << box[7] << box[8] << box[9] << endl;
            count++;
        }
         
        return;
    }
 
    for (int i = 1; i < MAXNUM; i++){
        if(book[i] == 0){
            box[step] = i;
            book[i] = 1;
            dfs(step+1);
            book[i] = 0;
        }
    }
    return;
}
 
int main()
{
    dfs(1);
     
    cout << "There has " << count << " results." << endl;
    return 0;
}

  

posted on   Linux-ever  阅读(837)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 对象分配(Alloc)底层原理浅谈
· 聊一聊 C#异步 任务延续的三种底层玩法
· 敏捷开发:如何高效开每日站会
· 为什么 .NET8线程池 容易引发线程饥饿
· golang自带的死锁检测并非银弹
阅读排行:
· 聊一聊 C#异步 任务延续的三种底层玩法
· 上位机能不能替代PLC呢?
· 2024年终总结:5000 Star,10w 下载量,这是我交出的开源答卷
· .NET Core:架构、特性和优势详解
· 一个适用于 .NET 的开源整洁架构项目模板
点击右上角即可分享
微信分享提示