需要注意的坑点:不要直接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");
}
博客内容涉及全排列算法的应用,通过C++实现了一个特定数组的全排列,并在每个排列上进行条件检查。代码中定义了一个整数数组,并排除了特定数值的全排列,然后检查排列是否满足一系列等式条件。若满足条件则输出排列。
&spm=1001.2101.3001.5002&articleId=109407141&d=1&t=3&u=b56147f3403e49f8aa9f4abbaeebbc1a)
2450

被折叠的 条评论
为什么被折叠?



