思路是全排列,但还只是部分ac

P1618 三连击(升级版)

magicrane @ 2022-12-26 20:57:34

#include<iostream>
using namespace std;
int a,b,c;
int ans=0;
int list[10]={0,1,2,3,4,5,6,7,8,9};
void swap(int&a,int&b)
{
    int temp=a;
    a=b;
    b=temp;
}
void ss()
{
    int a1=100*list[1]+10*list[2]+list[3];//第一个数
    int b1=100*list[4]+10*list[5]+list[6];//第二个数
    int c1=100*list[7]+10*list[8]+list[9];//第三个数
    if((a1*b==b1&&a1*c==c1)||(a1==a&&b1==b&&c1==c))
    {
        cout<<a1<<" "<<b1<<" "<<c1<<endl;
        ans++;
    }

}

void perm(int k)
{
    if(k==9)//最后一位开始判断 
    {
        ss();
        return;
    }
    for(int i=k;i<=9;i++)
    {
        swap(list[i],list[k]);
        perm(k+1);
        swap(list[i],list[k]);
    }

}
int main()
{
    cin>>a>>b>>c;
    int ans=0;
    perm(1);
    if(!ans)cout<<"No!!!";
}

by kbzcz @ 2022-12-26 21:10:53

@Cuiyuze 你把ans定义了两次,...


by magicrane @ 2022-12-27 20:29:34

@kbzcz 太感谢了 完全没有想过是这么蠢的问题,被自己蠢哭了


by Tx12345678 @ 2023-01-11 07:48:53

没问题


|