洛谷 B2101 计算矩阵边缘元素之和
题目描述
输入一个整数矩阵,计算位于矩阵边缘的元素之和。
所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素。
输入格式
第 1 行包含两个整数,分别为行数 m 和列数 n,两个整数之间空格隔开。
第 2 行开始有 m 行数据,每行包含 n 个整数,整数之间空格隔开。
输出格式
对应矩阵的边缘元素和。
题目分析 & 注意
代码实现的基本步骤很清晰,定义二维数组,循环录入数据,添加判断条件以更新总和值
但是!定义数组有一个很大很大的注意点!!!
如果把数组定义在main函数内部,最大限制是 719*719 超过该数值,则程序会崩溃,报错如下;所以数组的初始化需要在main函数外部哦!
#include<stdio.h>
// 初始化数组
int arr[1000][1000];
int main()
{
// 初始化行与列
int col,row;
scanf("%d %d",&row,&col);
// 初始化边缘和
int sum = 0;
// 循环录入
for(int i = 0;i<row;i++){
for(int j = 0;j<col;j++){
scanf("%d",&arr[i][j]);
// 和变化
if(i==0||j==0||i==row-1||j==col-1) {sum+=arr[i][j];}
}
}
printf("%d",sum);
return 0;
}
洛谷 B3652 渡荆门送别
题目背景
渡荆门送别
李白
渡远荆门外,来从楚国游。
山随平野尽,江入大荒流。
月下飞天镜,云生结海楼。
仍怜故乡水,万里送行舟。
题目描述
李白喜欢飞,也喜欢天鹅。
现在给出一排共 n 只鹅的身高,李白想知道最高的鹅比其他所有鹅高多少、最矮的鹅比其他所有鹅矮多少。
请输出这两行信息。
输入格式
输入共两行。
第一行一个整数 n 表示鹅的数目。
第二行共 n 个整数 (i=1,2,3...)ai(i=1,2,3...n),表示第 i 只鹅的身高。
输出格式
输出共两行。
第一行共 n 个空格隔开的整数,第 i 个整数表示序列中第 i 只鹅比最高的那只鹅要矮多少。
第二行共 n 个空格隔开的整数,第 i 个整数表示序列中第 i 只鹅比最矮的那只鹅要高多少。
题目分析
这个题其实思路很简单 但是一定要注意数值范围,还蛮大的……
#include<stdio.h>
#include<math.h>
long long arr[1000002];
int main()
{
int n;
scanf("%ld",&n);
// 初始化大小值
long long maxx = -1;
long long minn = pow(10,18);
// 找到最值
for(long long i = 0;i<n;i++){
scanf("%ld",&arr[i]);
// 更新最大值与最小值
maxx = maxx>arr[i]?maxx:arr[i];
minn = minn<arr[i]?minn:arr[i];
}
for(long long i = 0;i<n;i++){
printf("%ld ",maxx-arr[i]);
}
printf("\n");
for(long long i = 0;i<n;i++){
printf("%ld ",arr[i]-minn);
}
return 0;
}