7对数字排序,请帮忙看下
题目为有7对数字,一对1,一对2,一对3,。。一对7;要求两个1之间有1个数,两个2之间有2个数,两个3之间有三个数。。。两个7之间有7个数
例如:74****4*7*****
我想了下找不到用代码来实现,想用笔来实现又太难了,能不能给个思路,如果代码和思路都有的话就太感谢了
程序代码:#include <stdio.h>
void foo( unsigned mask[static 14], unsigned pair )
{
if( pair == 8 )
{
for( size_t i=0; i!=14; ++i )
printf( "%u%c", mask[i], i+1==14?'\n':' ' );
return;
}
for( size_t i=0; i+1+pair!=14; ++i )
{
if( mask[i]==0 && mask[i+1+pair]==0 )
{
mask[i]=pair, mask[i+1+pair]=pair;
foo( mask, pair+1 );
mask[i]=0, mask[i+1+pair]=0;
}
}
}
int main( void )
{
unsigned mask[14] = { 0 };
foo( mask, 1 );
return 0;
}