问题标题: 酷町堂:1805 蛇形填数

0
0

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
王梓澳
王梓澳
中级光能
中级光能

@梁锦程 结果

1、

2、

都不是题目上的要求

0
我要回答