二维数组求鞍点 ---- 2015/9/29
来源:互联网 发布:淘宝女鞋正品 编辑:程序博客网 时间:2024/05/19 02:00
鞍点 :行中最大,列中最小
定义整型二维数组[4][3]并附随机值([10 , 30]),求鞍点.
方法一:
<span style="font-size: 18px;"> </span>int array[4][3]; int minColumn[] = {31}; int maxRow[4] = {0}; for (int i = 0; i < 4; i++) { for (int j = 0 ; j < 3; j++ ) { array[i][j] = arc4random() % ( 30 - 10 + 1 ) + 10; printf("%d\t", array[i][j]); } printf("\n"); } for (int i = 0 ; i < 4 ; i++) { for (int j = 0; j < 3; j++) { maxRow[i] = ( array[i][j] > maxRow[i] ) ? array[i][j] : maxRow[i]; } } for (int i = 0 ; i < 3 ; i++) { for (int j = 0; j < 4; j++) { minColumn[i] = ( array[j][i] < minColumn[i] ) ? array[j][i] : minColumn[i]; } } int count = 0; for (int i = 0; i < 4; i++) { for (int j = 0; j < 3 ; j++) { if ( maxRow[i] == minColumn[j] ) { printf("第%d行,第%d列为鞍点,值为:%d\n", i + 1, j + 1, array[i][j]); count++; } } } printf("该二维数组共有%d个鞍点!!!\n", count);方法二:
int array[4][3]; int count = 0; for (int i = 0; i < 4; i++) { for (int j = 0 ; j < 3; j++ ) { array[i][j] = arc4random() % ( 30 - 10 + 1 ) + 10; printf("%d\t", array[i][j]); } printf("\n"); } for (int i = 0; i < 4; i++) { for (int j = 0 ; j < 3 ; j++) { int max = array[i][j];//假设当前点是该行最大值 for (int column = 0; column < 3; column++) { if (max < array[i][column]) { break; } else if (column < 2) { continue; } else { int min = array[i][j]; for (int row = 0; row < 4; row++) { if (min > array[row][j]) { break; } else if (row < 3) { continue; } else if(row == 3) { printf("鞍点: %d,所在第%d行,第%d列\n", array[i][j], i + 1, j + 1 ); count++; } } } } } } if (0 == count) { printf("该数组不存在鞍点!!!\n"); }
方法三:
int array[4][3]; int count = 0; for (int i = 0; i < 4; i++) { for (int j = 0 ; j < 3; j++ ) { array[i][j] = arc4random() % ( 30 - 10 + 1 ) + 10; printf("%d\t", array[i][j]); } printf("\n"); } for (int i = 0; i < 4; i++) { for (int j = 0 ; j < 3 ; j++) { //假设当前值就是鞍点 //验证: //验证一: int max = array[i][j];//假设当前点是该行最大值 //验证: 是不是该行最大值 BOOL isMax = YES;//Yes 为真,代表当前的点是鞍点 for (int column = 0; column < 3; column++) { //判断是不是该行最大值 if (max < array[i][column]) { //能够进入该分支内部,代表当前值不是该行最大的值,就不是鞍点 isMax = NO; break; } } if (isMax == NO) { continue; } //验证二: 该点是该列最小的 int min = array[i][j]; BOOL isMin = YES;//假设是该列中最小的 //验证是该列最小的. for (int row = 0; row < 4; row++) { if (min > array[row][j]) { //如果,一旦发现该行中还有数值,比当前的值 min 小,说明当前值不是最小的,不是鞍点. isMin = NO; break; } } if (! isMin) { continue; } //程序能够执行到该行,意味着该点就是鞍点 printf("鞍点: %d,所在第%d行,第%d列", array[i][j], i + 1, j + 1 ); count++; } } if (0 == count) { printf("该数组不存在鞍点!!!\n"); }个人认为方法一较易理解...
1 0
- 二维数组求鞍点 ---- 2015/9/29
- 求二维数组鞍点
- 求二维数组的鞍点
- 求二维数组的鞍点
- 求二维数组的鞍点
- 求二维数组中的鞍点【数组】
- 求二维数组中的鞍点【数组】
- 求二维数组中的鞍点【数组】
- 求二维数组中的鞍点【数组】
- 求二维数组中的鞍点【数组】
- 求一个二维数组中的鞍点
- java实现求二维数组的鞍点
- 第16周-求二维数组中的鞍点【数组】
- Problem G: 求二维数组中的鞍点【数组】
- Problem B: 求二维数组中的鞍点【数组】
- 找二维数组鞍点
- 二维数组鞍点问题
- 二维数组寻找鞍点
- Java 打印XML
- 查分约束POJ3169Layout解题报告
- P字首类破解补丁速查
- 在eclipse导入Java 的jar包的方法 JDBC【图文说明】
- Codeforces Beta Round #5——C. Longest Regular Bracket Sequence
- 二维数组求鞍点 ---- 2015/9/29
- ubuntu14.0(linux) 安装 apache2.4+ 报 apr not found
- UVA 1588_Kickdown
- Q字首类破解补丁速查
- HDU 4545 魔法串(西山居挑战赛)
- 【RMAN】数据库备份之冷备份
- GitHub for Windows 安装失败,An error occurred attempting to install github 的解决办法
- 拷贝数据库到沙盒
- HDU 1015 Safecracker