蒟蒻求助,40分代码····

P1618 三连击(升级版)

sczh @ 2019-06-23 13:39:24

这道题和老版的三连击我感觉差不多的,于是就用的DFS······请大神指点一下!!!哪有错呢?

#include<bits/stdc++.h>
using namespace std;
bool flag=false;
int a,b,c,s[15],vis[15];
void print(){
    cout<<s[1]<<s[2]<<s[3]<<' '<<s[4]<<s[5]<<s[6]<<' '<<s[7]<<s[8]<<s[9]<<endl;
}
bool check(){
    double n1=(s[1]*100+s[2]*10+s[3])/a,n2=(s[4]*100+s[5]*10+s[6])/b,n3=(s[7]*100+s[8]*10+s[9])/c;
    if(n1==n2&&n2==n3){
        flag=true;
        return true;
    }
    return false;
}
void dfs(int d){
    if(d==10){
        if(check()==true)
            print();
        return;
    }
    for(int i=1;i<=9;i++){
        if(vis[i])
            continue;
        vis[i]=1;
        s[d]=i;
        dfs(d+1);
        vis[i]=0;
    }
}
int main(){
    cin>>a>>b>>c;
    dfs(1);
    if(flag==false)
        cout<<"No!!!";
    return 0;
}

by 灵光一闪 @ 2019-06-23 14:00:30

@算法披萨 要写成if(!flag)

虽然这不是重点


by sczh @ 2019-06-23 14:43:10

○| ̄|_


by 1saunoya @ 2019-06-23 15:17:05

神仙题 看不懂 反正瞎搜就AC了


by 一言难尽 @ 2019-07-03 15:06:20

我也四十分


|