60分求助,RE+WA

P1618 三连击(升级版)

caojiaming @ 2022-09-22 20:41:59

#include<bits/stdc++.h>
using namespace std;
int n=9;
int a[15],b[15];
bool st[15];
int make_num(int a,int b,int c){
    return a*100+b*10+c;
}
void dfs(int x,int b1,int b2,int b3){
    if(x==n+1){
        for(int i=1;i<=n;i+=3)
            b[i/3+1]=make_num(a[i],a[i+1],a[i+2]);
        if(b[1]*b3/b1==b[3]&&b[1]*b2/b1==b[2]){
            printf("%d %d %d\n",b[1],b[2],b[3]);
        }
    }
    for(int i=1;i<=9;i++){
        if(!st[i]){
            a[x]=i;
            st[i]=true;
            dfs(x+1,b1,b2,b3);
            st[i]=false;
        }
    }
}
int main()
{
    int b1,b2,b3;
    cin>>b1>>b2>>b3;
    dfs(1,b1,b2,b3);
    return 0;
}

by Rosaya @ 2022-09-22 20:48:59

整数除法有下取整,这个判定可能会错。


by caojiaming @ 2022-09-22 20:50:40

还有如果无解,输出No!!!。 用主函数的递归就行了 可RE咋办呢


by Failure_Terminator @ 2022-09-22 21:00:14

@caojiaming 您套的是我上次现场写的板子吗


by caojiaming @ 2022-09-22 21:06:26

我整理了一下写出的


|