洛谷P1008三连击 题解

题目传送门

使用dfs搜索,搜索9个数字,注意回溯。。。最后判断是否符合条件,输出。

#include<bits/stdc++.h>
using namespace std;
int t[10],a[10];
void print()
{
    int b=a[1]*100+a[2]*10+a[3],c=a[4]*100+a[5]*10+a[6],d=a[7]*100+a[8]*10+a[9];
    if(b*2==c&&b*3==d)
        printf("%d %d %d
",b,c,d);
    return;
}
void dfs(int k)
{
    if(k==10){print();return;}
    for(int i=1;i<=9;i++)           //深搜1~9数字
        if(t[i]==0)
        {
            a[k]=i;
            t[i]=1;
            dfs(k+1);
            t[i]=0;
        }
}
int main(){
    dfs(1);
    return 0;
}
        
博客转载必须注出处!
原文地址:https://www.cnblogs.com/yzx1798106406/p/8575829.html