问题 D: ABC + DEF = GHI

题目描述
用1, 2, 3…9 这九个数字组成一个数学公式,满足:ABC + DEF = GHI,每个数字只能出现一次,编写程序输出所有的组合。
输入

输出
输出所有的 ABC + DEF = GHI,
每行一条数据,格式为ABC+DEF=GHI
输出结果按照ABC升序排列,如果ABC相同,则按照DEF升序排列。

#include<bits/stdc++.h>
#define swap(x, y) {int temp=x;x=y;y=temp;}
using namespace std;
const int N=1005;

typedef struct{
int x,y,z;
}Node;
Node node[N];
int num;
int a[9]={1,2,3,4,5,6,7,8,9};

bool cmp(Node a,Node b){
    if(a.x==b.x)
        return a.y<b.y;
    else
        return a.x<b.x;
}
int b[N];
void Find(int x,int y)
{
    if(x==y){
    int x1=a[0]*100+a[1]*10+a[2];
    int x2=a[3]*100+a[4]*10+a[5];
    int x3=a[6]*100+a[7]*10+a[8];
    if(x1+x2==x3){
       node[num].x=x1;
       node[num].y=x2;
        node[num].z=x3;
        num++;
    }
    return;
    }
    for(int i=x; i<=y; i++){
       swap(a[i],a[x]);
       Find(x+1,y);
       swap(a[i],a[x]);
    }

}


int main()
{
    num=0;
    Find(0,8);
    sort(node,node+num,cmp);


    for(int i=0;i<num;i++){
        printf("%d+%d=%d\n",node[i].x,node[i].y,node[i].z);
       
    }





}

猜你喜欢

转载自blog.csdn.net/qq_43520913/article/details/106150689
def