一、刷题内容
蓝桥杯真题:《蛇形填数》
二、知识点
新知:
全局数组,未初始化时,默认值都是 0;
局部数组,未初始化时,默认值为随机的不确定的值;
局部数组,初始化一部分时,未初始化的部分默认值为 0。
总结:
在这道题中的第一个while的判断条件纠结了很久,不知道数组未赋值的时候是0还是1。后来搜了一下,发现这个知识点还是很关键,以后尽量使用全局数组。
三、解题思路
根据题目找规律后发现,这个题需要四个方位,向右、向左下、向下、向右上。
再定义一个二维数组,用行(row)列(col)两个参数来控制移动,移动就相当于给二维数组按规律赋值。
第一个while的结束条件就是当a[19][19]为真就结束。
四、解题代码
#include <iostream>
using namespace std;
int main()
{
int a[100][100],row=0,col=0,num=1;
a[0][0]=1;
while(!a[19][19])
{
//向右
a[row][++col] = ++num;
//向左下
while(col)
{
a[++row][--col]==++num;
}
//向下
a[++row][col] = ++num;
//向右上
while(row)
{
a[--row][++col] = ++num;
}
}
cout<<a[19][19];
return 0;
}