您的位置:首页 > 其它

给定一个奇数n,比如n=3,生成1到n平方的数,如1到9,填入九宫格,使得横竖斜的和都相等。

2015-09-10 20:39 302 查看

给定一个奇数n,比如n=3,生成1到n平方的数,如1到9,填入九宫格,使得横竖斜的和都相等。

先来个3*3

816
357
492
n奇数幻方口诀:

1. 数字1放在第一行中间

2. 依次放在上一个数的右上角

2.1如果右边出去了就回到左边

2.2 如果上面出去了就放下面

2.3 如果右上角有了就放在这个数的下面

vector<vector<int> > Shudu(int n)

{
vector<vector<int> > ret(n, vector<int>(n, 0));
int i = 0, j = n/2, k = 2;

ret[i][j] = 1;
while(k <= n*n)
{
int tempi = i-1;
int tempj = j+1;
if(tempi < 0)
tempi = n-1;
if(tempj > n-1)
tempj = 0;
if(ret[tempi][tempj] != 0)
{
tempi = i+1;
tempj = j;
}
ret[tempi][tempj] = k;
i = tempi;
j = tempj;
++k;
}
return ret;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: