怎么让我的枚举运行时长变短些?运行超时了

问题:

如图1所示,填入1~12的数字。使得每条直线上的数字之和都相同。图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少?

#include<stdio.h>
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
	long long a[12];
	a[1]=1;a[2]=8;a[12]=3;
	for(int i=2;i<=12;i++)//i=a[3]
	   for(int j=2;j<=12;j++)//j=a[4]
	      for(int k=2;k<=12;k++)///k=a[6]]
	         for(int l=2;i<=12;l++)//l=a[7]
	         {
	         	int flag=1;
	         	a[5]=26-8-i-j;
	         	a[8]=26-1-i-k;
	         	a[9]=26-8-3-k;
	         	a[10]=26-3-a[5]-l;
	         	a[11]=26-1-j-l;
	         	if(1+i+k+a[8]==26&&1+j+l+a[11]==26&&a[8]+a[9]+a[10]+a[11]==26&&8+i+j+a[5]==26&&a[5]+l+a[10]+3==26&&8+k+a[9]+3==26)
	         	cout<<k<<endl;//输出a[6] 
	         }
	         return 0;
}

 

 

建议描述一下你的算法使用场景

for(a[3]=2;a[3]<=12;a[3]=+1)这一句话里最后a[3]+=1

现在你一直在重复在这一个值 

并且后面的循环都要把=+改成+=

还有最里面的一层循环a[6]是不是要改成a[7]?

不过你的if条件好像一直不满足,可以说一下这个输出条件嘛?