80分 RE+WA

P1618 三连击(升级版)

wangzai521 @ 2022-09-29 22:05:11

#include<iostream>
#include<stdlib.h>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
int a,b,c,cnt,kk;
string t;
bool st[10];
bool judge(int n,int m,int q){
    if(n/a*b==m&&n/a*c==q) return true;
    return false;
 }
bool check(string s1,string s2,string s3){
    int n=0,m=0,q=0;
    sscanf(s1.c_str(),"%d",&n);
    sscanf(s2.c_str(),"%d",&m);
    sscanf(s3.c_str(),"%d",&q);
    if(judge(n,m,q)) return true;
    return false;
}
void dfs(int u){
    if(t.size()==9){
        string s1=t.substr(0,3);
        string s2=t.substr(3,3);
        string s3=t.substr(6,3);
        if(check(s1,s2,s3)){
            kk++;
            cout<<s1<<" "<<s2<<" "<<s3<<endl;
        }
        return;
    }
    for(int i=1;i<=9;i++){
        if(st[i]) continue;
        st[i]=true;
        t.push_back(i+'0');
        dfs(u+1);
        t.pop_back();
        st[i]=false;
    }
}
int main(){
    scanf("%d%d%d",&a,&b,&c);
    dfs(0);
    if(kk==0) puts("No!!!");
    return 0;
}

|