Loading

洛谷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\n",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;
}
        

 

posted @ 2018-03-15 19:46  yzx_1798106406  阅读(231)  评论(0编辑  收藏  举报