2020年第十一届蓝桥杯软件类C++B组试题C:蛇形填数题目答案
作者:互联网
【问题描述】如下图所示,小明用从 1 开始的正整数“蛇形”填充无限大的矩阵。
1 2 6 7 15 …
3 5 8 14 …
4 9 13 …
10 12 …
11 …
…
容易看出矩阵第二行第二列中的数是 5。请你计算矩阵中第 20 行第 20 列
的数是多少?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
【正确答案】761
看见有的大神直接找到他们的规律然后就算出了那个数,我当时没想到,用的是死方法,就是把数组全部赋值然后找到20行20列那个数。
放上我的代码,里面有代码解析:
#include <iostream>
using namespace std;
int main()
{
int ch[40][40]; //一定要分配40个空间的数组,才能读出最中间[19][19]的位置
ch[0][0] = 1; //第一个值直接赋值1
int s = 2; //后面的从2开始一直加
int i=0,j=1,k=1;//i,j是数组下标,我们直接从[0][1]开始就可以了,k用来标志上行和下行的次数
while(k<=19)
{
//先是下行,往斜下方加数
while(j>=0)
{
ch[i][j] = s++;
i++;j--;
}
j++; //到最后j变成-1了,要加一次使其为0
//然后上行,往斜上方加数
while(i>=0)
{
ch[i][j] = s++;
i--;j++;
}
i++; //到最后i变成-1了,要加一次使其为0
k++;
}
cout<<ch[19][19]<<endl; //761
//测试打印一下
/*
for(i=0;i<40;i++)
{
for(j=0;j<40;j++)
{
cout <<ch[i][j]<<" ";
}
cout<<endl;
}
*/
return 0;
}
这是打印出来的结果图(我把数组也打印出来了):
标签:ch,20,++,C++,蓝桥,int,while,填数,40 来源: https://blog.csdn.net/weixin_45529874/article/details/115673470