找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2823|回复: 0
打印 上一主题 下一主题
收起左侧

c语言二维数组中的鞍点

[复制链接]
跳转到指定楼层
楼主
ID:72519 发表于 2015-1-22 02:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. //二维数组中的鞍点,行中最大,列中最小,也可能没有鞍点
  2. #include<stdio.h>
  3. void main()
  4. {
  5. //首先输入一个二维数组
  6. //这个二维数组是任意阶数的
  7. int m;//数组的阶数
  8. int a[20][20];
  9. int i,j;//数组的坐标
  10. int t;//每一行当前最大值存放变量
  11. int p,q;//存放最大值坐标的变量
  12. int l=0;//累计列中比当前值大的数的数量
  13. int k;//为了防止最外层的i被破坏,引进一个新的变量
  14. int n=0;//累计所有鞍点的个数
  15. printf("please input  order and then input elements:\n");
  16.     scanf("%d",&m);
  17. for(i=0;i<m-1;i++)
  18. {
  19.   for(j=0;j<=m-1;j++)
  20.   {
  21.   scanf("%d",&a[i][j]);
  22.   }
  23. }
  24. //现在材料有了,该处理数据了
  25. //我想先从第一行开始,找到最大的,再确定是否是该列最小的,如果是,阶数循环,输出该数及该数坐标
  26. //如果不是,继续从下一行找
  27.    for(i=0;i<=m-1;i++)
  28.    {
  29.   t=a[i][0];
  30.   for(j=0;j<=m-1;j++)
  31.   {
  32.      if(a[i][j]>=t)
  33. {
  34.   t=a[i][j];
  35.   p=i;
  36.   q=j;//现在t里面存放当前行里面的最大值,pq中存放着他的坐标
  37. }
  38.   }
  39. for(k=0;k<=m-1;k++)//在当前列中寻找是否有比他大的,++not--
  40. {
  41.    if(a[k][q]>=t)
  42. {
  43. l+=1;
  44. }
  45. }

  46. if(l==m-1)
  47. { n=n+1;
  48. printf("%3d,%3d\n",p,q);}
  49. l=0;//变量l清零,为下一次做准备  

  50.    }
  51.    if(n>0)
  52.   printf(" exists a saddle point\n");
  53.    else
  54.   printf("does not exist a saddle point\n");
  55. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表