需要注意的坑点:不要直接1~14全排列,只需要排列剩下的11个数即可
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int a[]={1,2,3,4,5,7,8,9,10,12,13};
int ans;
bool check()
{
int num1=a[0]+a[1]+a[2]+a[3];
int num2=6+a[1]+a[4]+14;
if(num1!=num2) return 0;
int num3=6+a[2]+a[5]+11;
if(num2!=num3) return 0;
int num4=a[3]+a[5]+a[7]+a[10];
if(num3!=num4) return 0;
int num5=a[8]+a[9]+a[7]+11;
if(num4!=num5) return 0;
int num6=a[6]+a[10]+a[8]+14;
if(num5!=num6) return 0;
int num7=a[0]+a[4]+a[6]+a[9];
if(num6!=num7) return 0;
return 1;
}
int main()
{
do
{
if(check())
{
for(int i=0;i<4;i++)
{
printf("%d",a[i]);
if(i!=3) printf(" ");
}
}
}while(next_permutation(a,a+11));
//printf("10 3 9 8\n");
}