dfs还是一个硬伤啊。。。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int a[]= {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int vis[30];
int cnt=0;
int ans[50];
int sum1,sum2,sum3;
void dfs(int k)
{
if(k==8&&a[0]==1)
{
int t1=0;
int t2=0;
int t3=0;
for(int i=0; i<8; i++)
{
t1+=a[i];
t2+=a[i]*a[i];
t3+=a[i]*a[i]*a[i];
}
if(t1==sum1&&t2==sum2&&t3==sum3)
{
sort(a,a+8);
for(int i=0; i<8; i++)
{
printf("%d",a[i]);
if(i!=7) printf(" ");
}
printf("\n");
}
return ;
}
for(int i=1; i<=16; i++)
{
if(vis[i]==0)
{
a[k]=i;
vis[i]=1;
dfs(k+1);
vis[i]=0;
}
}
}
int main()
{
for(int i=1;i<=16;i++)
{
sum1+=i;
sum2+=i*i;
sum3+=i*i*i;
}
sum1/=2;
sum2/=2;
sum3/=2;
dfs(0);
// printf("1 4 6 7 10 11 13 16\n");
return 0;
}