程序代码:#include <stdio.h>
int main( void )
{
// 已知条件
const unsigned input[] = { 9,2,5, 6,8,4, 3,1,7 };
// 计算出每个数所在的下标
size_t rc[9] = { 0 };
for( size_t i=0; i!=9; ++i )
rc[ input[i]-1 ] = i;
// 输出距离矩阵
for( size_t i=0; i!=81; ++i )
{
size_t a = rc[i/9];
size_t b = rc[i%9];
size_t dis = (a/3 < b/3 ? b/3-a/3 : a/3 - b/3)
+ (a%3 < b%3 ? b%3-a%3 : a%3 - b%3);
printf( "%zu%c", dis, " \n"[(i+1)%9==0] );
}
}假如你用的编译器比较烂(比如用的是TC、VC2013之前的编译器等),那么将
printf( "%zu%c", dis, " \n"[(i+1)%9==0] );
改为
printf( "%u%c", (unsigned)dis, " \n"[(i+1)%9==0] );







