ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

2020年第十一届蓝桥杯软件类C++B组试题C:蛇形填数题目答案

2021-04-13 17:29:12  阅读:245  来源: 互联网

标签:ch 20 ++ C++ 蓝桥 int while 填数 40


【问题描述】如下图所示,小明用从 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有