<重发>为啥深搜出的结果不是升序排列的??

P1618 三连击(升级版)

战场原_黑仪 @ 2019-07-10 11:36:46

#include<iostream>
#include<cstdio>
using namespace std;
int a,b,c;
bool fl[10]={0};
int num[4]={0};
int all=0;
void make(int x)
{
if(x>9)
{
    if(1.0*num[1]/a==1.0*num[2]/b&&1.0*num[1]/a==num[3]/c)
    printf("%d %d %d\n",num[1],num[2],num[3]);
    all++;
    return;
}
for(int i=1;i<=9;i++)
{
    if(fl[i]==true)
    continue;
    if(x%3==1)
    {
        num[(x/3)+1]+=i;
        fl[i]=true;
        make(x+1);
        fl[i]=false;
        num[(x/3)+1]-=i;
    }
    if(x%3==2)
    {
        num[(x/3)+1]+=i*10;
        fl[i]=true;
        make(x+1);
        fl[i]=false;
        num[(x/3)+1]-=i*10;
    }
    if(x%3==0)
    {
        num[x/3]+=i*100;
        fl[i]=true;
        make(x+1);
        fl[i]=false;
        num[(x/3)]-=i*100;
    }
}
}
int main()
{
cin>>a>>b>>c;
make(1);
if(all==0)
cout<<"No!!!";
return 0;
}

by 战场原_黑仪 @ 2019-07-10 11:41:42

不好意思,发错版本了 全当没看见吧,谢谢


by 宓欣愉 @ 2019-07-10 11:53:21

呵呵,厉害,赶紧发,别再发错了


|