http://blog.csdn.net/dalehui/article/details/17035629
鞍点是什么?百度出来的东西
鞍点(Saddle point)在微分方程中,沿着某一方向是稳定的,另一条方向是不稳定的奇点,叫做鞍点。在泛函中,既不是极大值点也不是极小值点的临界点,叫做鞍点。在矩阵中,一个数在所在行中是最大值,在所在列中是最小值,则被称为鞍点。在物理上要广泛一些,指在一个方向是极大值,另一个方向是极小值的点。
题目是这样的
找出一个二维数组中的“鞍点”,即该位置上的元素在该行中最大,在该列中最小(也可能没有“鞍点”),打印出有关信息。
- #define ROW_COLUMN 5
- void saddlePoint()
- {
- int array[ROW_COLUMN][ROW_COLUMN]={6,9,9,2,7 ,4,9,5,4,2, 9,9,8,7,9, 7,8,4,5,6, 2,9,4,5,6};
- int maxRow[ROW_COLUMN]={0},minColumn[ROW_COLUMN]={50,50,50,50,50}; //马鞍点
- for (int row=0; row<ROW_COLUMN; row++) {
- for (int column=0; column<ROW_COLUMN; column++) {
- // array[row][column]=arc4random()%10+1;
- printf("%d ",array[row][column]);
- }
- printf("\n");
- }
- for (int i=0; i<ROW_COLUMN; i++) {
- for (int j=0; j<ROW_COLUMN; j++) {
- if (array[i][j]>maxRow[i]) {
- maxRow[i]=array[i][j]; //塞选出每一行的最一大个,保存进最大行数组
- }
- }
- }
- for (int i=0; i<ROW_COLUMN; i++) {
- for (int j=0; j<ROW_COLUMN; j++) {
- if(array[j][i]<minColumn[j])
- {
- minColumn[i]=array[j][i]; //塞选每列的最小那个,保存进最小输裂数组
- }
- }
- }
- bool boolFlag=false;
- for (int i=0; i<ROW_COLUMN; i++) {
- if(maxRow[i]==minColumn[i])
- {
- boolFlag=true;
- }
- }
- printf("%s",boolFlag?"鞍点存在":"鞍点不存在");
- }