热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

计蒜客2018蓝桥杯省赛B组模拟赛(五)A.结果填空:矩阵求和

【题目链接】:https:nanti.jisuanke.comt25084【题目描述】:给你一个n×n的矩阵,里面填充1到nxn。例如当n等于3的时候,填充的

【题目链接】:https://nanti.jisuanke.com/t/25084

【题目描述】:给你一个 n×n 的矩阵,里面填充 1n x n。例如当 n 等于 3 的时候,填充的矩阵如下。

1    2    3

4    5    6

7    8    9

现在我们把矩阵中的每条边的中点连起来,这样形成了一个新的矩形,请你计算一下这个新的矩形的覆盖的数字的和。比如,n = 3 的时候矩形覆盖的数字如下。

        2

4     5     6

       8

那么当 n 等于 101 的时候,矩阵和是多少?



【解析】:这道题做了很多遍才做对,刚开始没有理解题意,认为只是计算矩阵两条边就可以,其实题目中要求的是计算两条边为对角线的矩形所覆盖的面积。


其中彩色部分为所求区域,我的思路是将彩色部分分成四部分,分别为左上,右上,左下,右下。四部分相加即可得到结果,其中粉色部分共加了两次,黑色部分共加了四次,因此要减去一次粉色部分再减去的过程中也减去了两次黑色部分,还要再减去一次黑色部分。

【答案】:26020201

【代码】:

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = 1;
		int m = sc.nextInt();//输入行列数
		int a[][] = new int[120][120];//将数储存在二维数组中
		for (int i = 1; i <= m; i++) {
			for (int j = 1; j <= m; j++) {
				a[i][j] = n;//赋值
				n++;
			}
		}
		int sum = 0;//求总和
		/**左上部分求和**/
		for (int i = 1; i <= (m + 1) / 2; i++)
			for (int j = (m + 1) / 2; j > (m + 1) / 2 - i; j--)
				sum += a[i][j];
		/**右上部分求和**/
		for (int i = 1; i <= (m + 1) / 2; i++)
			for (int j = (m + 1) / 2; j <(m + 1) / 2 + i; j++)
				sum += a[i][j];
		/**左下部分求和**/
		for (int i = (m + 1) / 2; i <= m; i++)
			for (int j = i - (m + 1) / 2 + 1; j <= (m + 1) / 2; j++)
				sum += a[i][j];
		/**右下部分求和**/
		int k = m;
		for (int i = (m + 1) / 2; i <= m; i++) {
			for (int j = (m + 1) / 2; j <= k; j++)
				sum += a[i][j];
			k--;
		}
		//求和时位于中点的两条线共加了两遍,因此要减去中间两条线的和
		int sum1 = 0;
		for (int i = 1; i <= m; i++)
			sum1 += a[(m + 1) / 2][i] + a[i][(m + 1) / 2];
         //矩阵最中间的点共加了4遍,减去的两条边中有两遍,因此要再减去一遍
		System.out.println(sum - sum1 - a[(m + 1) / 2][(m + 1) / 2]);
	}
}



推荐阅读
author-avatar
小白_king
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有