【求助】n×n阶右手旋转方阵
小弟是初学者 望各位大虾指点... 先在此谢过【求助】n×n阶右手旋转方阵
键盘输入一个正数n(1<=n<=20),输出n×n阶右手旋转方阵。
例如 键盘输入数据4,则输出
1 12 11 10
2 13 16 9
3 14 15 8
4 5 6 7
----------------解决方案--------------------------------------------------------
#define DOWN 1
#define RIGHT 2
#define UP 3
#define LEFT 4
void ringMatrix(int** M, int N)
{
int i, j, value = 0;
int direction = DOWN;
//元素都初始化为零
for(i = 0; i < N; i++)
for(j = 0; j < N; j++)
M[i][j] = 0;
i = j = 0;
while(true)
{
switch(direction)
{
case DOWN:
for( ; (i < N) && (M[i][j] == 0); i ++)
M[i][j] = (++ value);
if(M[-- i][++ j] != 0)
return;
direction = RIGHT;
break;
case RIGHT:
for( ; (j < N) && (M[i][j] == 0); j ++)
M[i][j] = (++ value);
if(M[-- i][-- j] != 0)
return;
direction = UP;
break;
case UP:
for( ; (i >= 0) && (M[i][j] == 0); i --)
M[i][j] = (++ value);
if(M[++ i][-- j] != 0)
return;
direction = LEFT;
break;
case LEFT:
for( ; (j >= 0) && (M[i][j] == 0); j --)
M[i][j] = (++ value);
if(M[++ i][++ j] != 0)
return;
direction = DOWN;
break;
}
}
}
----------------解决方案--------------------------------------------------------
编译不能通过啊
我用的是TC
----------------解决方案--------------------------------------------------------
这么还没有人帮帮我啊。。。
而且上段代码 我还有点看不懂。。。
比如 void ringMatrix(int** M, int N)
是什么意思?
----------------解决方案--------------------------------------------------------
而且2楼给的好像不是我讲的意思吧?
至少要让用户输入 n 的大小吧
还有
2楼编的程序 你认真读下
根本和我说要实现的功能不一样啊!!
右手旋转方阵的意思如下图:
----------------解决方案--------------------------------------------------------
呵呵 问题已经解决... ...
----------------解决方案--------------------------------------------------------