デジタルブルーブリッジカップc++を並べます


今7対の数字があります:2つの1、2つの2、2つの3、...2つの7、それらを1行に並べます.要求されるのは、2つの1つの間に1つの他の数字があり、2つの2つの間に2つの他の数字があり、このようにして、2つの7の間に7つの他の数字がある.以下に、要件を満たす配列を示します.
17126425374635
もちろん、それを逆さまにすれば、要求に合っています.
もう一つの要求に合った配列法を見つけてください.この配列法は74で始まります.
#include 
#define n 7
int a[14]={7,4,0,0,0,0,4,0,7,0,0,0,0,0};
 
bool ok(int t,int i) 
{
	if(t+i+1>=2*n)//        
		return false;
	if(a[t+i+1]!=0)//           
		return false;
	for(int j=0;j<t;j++)
	{//                
		if(a[j]==i)
			return false;
	}
	return true;
}
 
void dfs(int t)
{
	if(t==2*n)
	{
		for(int i=0;i<2*n;i++)
		{
			printf("%d  ",a[i]);
		}
		printf("
"
); return; } if(a[t]!=0)// , dfs(t+1); else{ for(int i=1;i<=n;i++) {// n if(ok(t,i)) {// , a[t]=i; a[t+i+1]=i; dfs(t+1); a[t]=0; a[t+i+1]=0; } } } } int main() { dfs(0); return 0; }