第一空,i<m ,即表示要访问到二维数组的每一行;
第二空,max= a[i][j] ,即当当前二维数组元素的值大于最大值变量max时,将当前元素的值赋值给最大值变量max;
第三空,return max, 用于返回最大值变量max。
补充如下:
#include <stdio.h>
#define N 4
int GetMax(int a[][N],int m){
int i,j,max=a[0][0];
// 外层循环控制访问二维数组的每一行
// m为二维数组的行数
for(i=0;i<m;i++){
for(j=0;j<N;j++){
if(a[i][j]>max){
// 如果当前二维数组元素的值大于最大值
// 则将当前二维数组元素的值赋值给最大值变量max
max=a[i][j];
}
}
}
// 返回最大值变量max
return max;
}
int main(void){
int b[3][4]={{1,2,3,4},{0,1,-2,-3},{12,-2,8,-32}},i;
printf("max=%d ",GetMax(b,3));
printf("\n");
return 0;
}
选假设max是第一个数组元素,然后用max跟其他的数组元素进行比较,max大于数组元素就不变,小于就替换掉。
只是函数参数传递的技巧,与写法一无太大区别
//C++:
inline long long extend_gcd(long long a, long long b, long long &x, long long &y)
{
if (a == 0 && b == 0)
return -1ll;
if (b == 0)
{
x = 1ll;
y = 0ll;
return a;
}
long long d = extend_gcd(b, a % b, y, x);
y -= a / b * x;
return d;
}
有解的正常的递推终止条件为:r=0 , b=1 , x1=1 , y1=0成立表达式:ry1+bx1=1构造y=x1−ky1 , x=y1 , a=kb+r , 则:ax+by=ay1+b(x1−ky1)=bx1+ry1=1可验证x,y分别为a模b的乘法逆元,b模a的乘法逆元。而通过数学归纳法知,ax+by=1是递归栈返回时每一层的性质。因此,递推公式成立。 有解的正常的递推终止条件为:r=0\,,\,b=1\,,\,x_1=1\,,\,y_1=0 \\ 成立表达式:ry_1+bx_1 = 1 \\ 构造y=x_1-ky_1\,,\,x=y_1\,,\,a=kb+r\,,\,则:\\ ax+by=ay_1+b(x_1-ky_1)=bx_1+ry_1 = 1 \\ 可验证x,y分别为a模b的乘法逆元,b模a的乘法逆元。\\ 而通过数学归纳法知,ax+by = 1 是递归栈返回时每一层的性质。\\ 因此,递推公式成立。 有解的正常的递推终止条件为:r=0,b=1,x1=1,y1=0成立表达式:ry1+bx1=1构造y=x1−ky1,x=y1,a=kb+r,则:ax+by=ay1+b(x1−ky1)=bx1+ry1=1可验证x,y分别为a模b的乘法逆元,b模a的乘法逆元。而通过数学归纳法知,ax+by=1是递归栈返回时每一层的性质。因此,递推公式成立。
我来给出这个函数的解决方案:
public static int getMax(int[][] a, int m, int n) {
int max = a[0][0]; // 先假设第一个元素最大
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (a[i][j] > max) { // 如果当前元素大于max,则更新max
max = a[i][j];
}
}
}
return max; // 返回最大值
}
其中,函数名为getMax
,输入参数为一个二维数组a
、行数m
和列数n
,输出为二维数组中的最大值。函数内部使用两个循环来遍历整个二维数组,先假设第一个元素最大,然后依次比较每个元素是否比max
更大,如果是,则更新max
的值。最后返回max
即可。