第六周学习总结
作者:互联网
第六周学习总结
目录
本周我们主要学习了二维数组的相关知识。
二维数组的定义
-
静态定义
类型说明符 数组名[常量表达式][常量表达式] eg. int array[11][11];
-
动态定义(C++)
类型说明符 **数组名 = new 类型说明符*[行数]; for (int i = 0; i < m; ++i) { 数组名[i] = new 类型说明符[列数]; } //...... for (int i = 0; i < m; ++i) { delete[] 数组名[i]; } delete[] 数组名;
二维数组的函数引用
我们在之前了解过,在自定义函数中引用一维数组是这样子的:
int func(int a[],int n)
{
//...
}
int main()
{
///...
func(a,n);
//...
}
那么类似的,在自定义函数中引用二维数组是这样子的:
int func(int a[][列数],int n) //列数不能省!
{
//...
}
int main()
{
///...
func(a,n);
//...
}
二维数组的应用
L2-3 找鞍点 (20 分)
一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。
本题要求编写程序,求一个给定的n阶方阵的鞍点。
输入格式:
输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数,其间以空格分隔。
输出格式:
输出在一行中按照“行下标 列下标”(下标从0开始)的格式输出鞍点的位置。如果鞍点不存在,则输出“NONE”。题目保证给出的矩阵至多存在一个鞍点。
输入样例1:
4 1 7 4 1 4 8 3 6 1 6 1 2 0 7 8 9
** 输出样例1:**
2 1
输入样例2:
2 1 7 4 1
输出样例2:
NONE
这道题是二维数组大显身手的舞台。我们先找到行上的行最大值,然后在这最小值所在列上寻找列最小值。最后再将其一比较,若最大最小值相同,就找到了。
//参考代码
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
int a[11][11] = {0};
for (int i = 0; i < n; i++) //数据输入
{
for (int j = 0; j < n; j++)
{
scanf("%d", &a[i][j]);
}
}
for (int i = 0; i < n; i++)
{
int max = a[i][0];
int maxj = 0;
for (int j = 0; j < n; j++) //找最大值
{
if (a[i][j] >= max)
{
max = a[i][j];
maxj = j;
}
}
int min = max;
int mini = 0;
for (int x = 0; x < n; x++) //找最小值
{
if (a[x][maxj] <= min)
{
min = a[x][maxj];
mini = x;
}
}
if (max == min) //比较
{
printf("%d %d", i, maxj);
return 0;
}
}
printf("NONE");
return 0;
}
标签:总结,学习,...,int,第六周,++,二维,数组,鞍点 来源: https://www.cnblogs.com/zeroize/p/week6.html