什么是鞍点?????
鞍点就是在一个二维数组中,某一个数在该行中最大,然而其在该列中又是最小的数,这样的数称为鞍点。
昨天突然在书上看到这样的一道题,就自己尝试着写了一个找出一个二维数组中的鞍点。
好了,废话不多说,代码奉上。。。。。。。。。。。。
1 /*这个程序检测的是一个二维数组中是否存在鞍点, 2 所谓的鞍点即是在这个二维数组中,某一个位置上的 3 元素在该行上最大,该列上最小*/ 4 #include5 #define M 3 6 #define N 3 //定义行和列的大小 7 8 int main() 9 {10 int a[M][N];11 int i, j;12 int temp = 1, temp1[M], temp2[N];13 printf("请根据提示输入二维数组。\n");14 //输入数组15 for (i = 0;i < N;j++)17 {18 printf("a[%d][%d]=", i, j);19 scanf_s("%d", &a[i][j]);20 }21 //输出数组22 for (i = 0;i < M;i++)23 {24 for (j = 0;j < N;j++)25 printf("%d\t", a[i][j]);26 printf("\n");27 }28 //处理数组29 for (i = 0;i < M;i++)30 {31 temp1[i] = a[i][0]; //给每行的最大值赋一个初始值32 temp2[i] = a[0][i]; //给每列的最小值赋一个初始值33 for (j = 0;j < N;j++)34 {35 if (temp1[i] < a[i][j]) temp1[i] = a[i][j];36 if (temp2[i] > a[j][i]) temp2[i] = a[j][i];37 }38 }39 for (i = 0;i < M;i++)40 {41 for (j = 0;j < N;j++)42 {43 if (a[i][j] == temp1[i] && a[i][j] == temp2[j])44 printf("这个二维数组的鞍点为%d\n", a[i][j]);45 else46 temp = 0;47 48 }49 }50 if (temp == 0)51 printf("这个数组中没有鞍点.\n");52 }
还是一样的话,弄上本代码是为了和大家一起交流学习。
欢迎大家的讨论和提问。