#include<bits/stdc++.h>
using namespace std;
typedef struct node
{
int a,b,c;
}node;
int _count=0;
node A[362881];
bool cmp(node w,node j)
{
if(w.a==j.a&&w.b==j.b)
return w.c<j.c;
else
if(w.a==j.a)
return w.b<j.b;
else
return w.a<j.a;
}
int main()
{
int FLAG=1;
vector<int>a(9);
vector<int>b(3);
for(int i=0;i<9;i++)
a[i]=i+1;
while(FLAG)
{
FLAG=next_permutation(a.begin(),a.end());
if(FLAG==1)
{
b[0]=a[0]*1+a[1]*10+a[2]*100;
b[1]=a[3]*1+a[4]*10+a[5]*100;
b[2]=a[6]*1+a[7]*10+a[8]*100;
sort(b.begin(),b.end());//按升序排序
if(b[1]==b[0]*2&&b[2]==b[0]*3)
{
node temp;
temp.a=b[0];
temp.b=b[1];
temp.c=b[2];
int flag=1;
for(int i=0;i<_count;i++)
{
if(A[i].a==temp.a&&A[i].b==temp.b&&A[i].c==temp.c)
{
flag=0;
break;
}
}
if(flag==1)
A[_count++]=temp;
}
}
}
sort(A,A+_count,cmp);
for(int i=0;i<_count;i++)
printf("%d %d %d\n",A[i].a,A[i].b,A[i].c);
}
用C++STL实现的洛谷P1008三连击
最新推荐文章于 2024-07-01 08:05:11 发布