デジタルブルーブリッジカップc++を並べます
9459 ワード
今7対の数字があります:2つの1、2つの2、2つの3、...2つの7、それらを1行に並べます.要求されるのは、2つの1つの間に1つの他の数字があり、2つの2つの間に2つの他の数字があり、このようにして、2つの7の間に7つの他の数字がある.以下に、要件を満たす配列を示します.
17126425374635
もちろん、それを逆さまにすれば、要求に合っています.
もう一つの要求に合った配列法を見つけてください.この配列法は74で始まります.
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;
}