Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2545264
  • 博文数量: 308
  • 博客积分: 5547
  • 博客等级: 大校
  • 技术积分: 3782
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-24 09:47
个人简介

hello world.

文章分类

全部博文(308)

分类: C/C++

2011-03-29 08:26:45

    在一个矩阵中,存在在该行中数最大,在该列中数最小的数,即为该矩阵的鞍点。
    知道了鞍点的定义,我们可以编写程序,通过循环判断,先找到该在指定的行数最大的行编号,然后在循环判断是否在该列是否是最小的数。通过指针将行列的数据返回即可。代码如下:
  1. #include <stdio.h>

  2. int getSaddlePoint(int *x, int *y, int (*A)[5], int m, int n)
  3. {
  4.   int max, i, j, k, flag;
  5.   for(i=0; i<m; i++)
  6.   {
  7.     max = 0;
  8.     flag = 1;
  9.     for(j=1; j<n; j++)
  10.     {
  11.       if(A[i][j] > A[i][max])
  12.         max = j;
  13.     }

  14.     for(k=0; k<n; k++)
  15.     {
  16.       if(A[i][max] == A[i][k] && max != k)
  17.       {
  18.     flag = 0;
  19.         break;
  20.       }
  21.     }

  22.     if(flag == 1)
  23.     {
  24.       for(k=0; k<m; k++)
  25.       {
  26.     if(A[k][max] <= A[i][max] && k != i)
  27.     {
  28.      flag = 0;
  29.           break;
  30.         }
  31.       }
  32.     }
  33.     
  34.     if(flag == 1)
  35.     {
  36.       *x = i;
  37.       *y = max;
  38.       return 1;
  39.     }
  40.   }
  41.   return 0;
  42. }

  43. int main(int argc, char *argv[])
  44. {
  45.   int A[5][5],i,j,x,y;
  46.   printf("please input some digit into the 5*5 matrix\n");
  47.   for(i=0; i<5; i++)
  48.     for(j=0;j<5;j++)
  49.       scanf("%d",&A[i][j]);

  50.   if(getSaddlePoint(&x,&y,A,5,5))
  51.      printf("\n saddlePoint is at (%d,%d)",x+1, y+1);
  52.   else
  53.     printf("\nthere is no in the matrix\n");
  54.   return 0;

  55. }
阅读(5464) | 评论(0) | 转发(0) |
0

上一篇:sqlite3加密

下一篇:n阶勒让德多项式求解

给主人留下些什么吧!~~