void arrangement(int n,int a[][])
{
if(n==1)
{
a[0][0]=1;
return;
}
arrangement(n/2);
merger(n);
}
void merger(int n)
{
int m=n/2;
for(int i=0;i<m;i++)
for(int j=0;j<m;j++)
{
a[i][j+m]=a[i][j]+m; //由左上角小块的值算出对应的右上角小块的值
a[i+m][j]=a[i][j+m]; //由右上角小块的值算出对应的左上角小块的值
a[i+m][j+m]=a[i][j]; //由左上角小块的值算出对应的右上角小块的值
}
}
循环赛-----分治法
最新推荐文章于 2024-03-02 15:42:25 发布