0
已采纳
@王梓澳 看看我的! @王梓澳
一定一定一定可以帮上你的忙:点我吧,包你满意!
马佳滢在2018-03-04 14:19:07追加了内容
先生啊,你怎么如此粗心呢? @王梓澳
输出描述 Output Description
输出对应的蛇形方阵,所有数字占三个位宽,左对齐,数字和数字之间一个空格间隔
呵呵,这句话看清了。
左对齐自己写判断……(除了左对齐问题外,剩下100 OK的)
0
0
for (i=1;i<=n;i++)
for (j=1;j<=n+1-i;j++)
{
k=i+j-2;
sum=(k+1)*k/2;
if (j==n+1-i)
printf("%d\n",sum+j);
else
printf("%d ",sum+j);
}
0
- 1.图解:
-
样例输出 Sample Output

-
蛇,就是跟着箭头走。
-
2.思路:
这是个4连通问题。 针对每个方阵中的格子,与它四连通相邻的格子有4个:左右和上下; 要想访问它们有四个方向:向下y坐标加1,纵坐标加0,记为(0,1),顺时针是向左(-1,0),然后是(0,-1),最后是(1,0);可用一个方向数组存储这四个方向,切换时按顺序选取。 数组开设好,填充为0值; 种子格子为数组右上方元素填入第一个计数1,下面第一方向为(0,1),按照这个方向如果发现新格子在数组坐标内且其值为0,则进行填充,再按照方向继续填充; 如果发现上面条件不满足换第二个方向(-1,0)继续填充; 直到当前格子的四个方向均不满足填充条件时结束。 这样得到的就是所谓蛇形填数的结果。
0
0


@马佳滢 
