编程语言
首页 > 编程语言> > 2020年第十一届蓝桥杯软件类C++B组试题C:蛇形填数题目答案

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