| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 954 人关注过本帖
标题:找二维数组鞍点理论上应该是对的,但运行无结果求解答?
只看楼主 加入收藏
qsccsq123
Rank: 1
等 级:新手上路
帖 子:31
专家分:2
注 册:2009-10-15
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:7 
找二维数组鞍点理论上应该是对的,但运行无结果求解答?
# define N 3
# define M 4
# include <stdio.h>
void main()
{int a[N][M],i,j,c,r,b,code=0;
 printf("input a[N][M]\n");
 for(i=0;i<N;i++)
 {   for(j=0;j<M;j++)
         scanf("%d",&a[i][j]);
         printf("\n");
 }
 for(i=0;i<N;i++)
 {   for(i;i<N;i++)
         for(j=0;j<M;j++)
             if(a[i][j]>b)
             {b=a[i][j];
              c=i;
              r=j;
             }
      for(i=0;i<N;i++)
          if(a[i][r]<b)
              code=1;
  if(code)
    continue;
  else
      printf("%d",a[c][r]);
  }
}
搜索更多相关主题的帖子: 运行 解答 结果 理论 鞍点 
2010-03-12 20:58
ldg628
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:3
帖 子:526
专家分:3036
注 册:2009-6-23
收藏
得分:5 
注意变量的初始化:
像b原始的值都不知道是多少就被拿来用了,c与r你还要考虑if(a[i][j]>b)一直为假的情况,要不然它们都是未初始化的值,然后又被下面的代码使用了

代码写规范些有助于阅读,并且可以降低错误的发生
2010-03-12 21:23
cedars
Rank: 2
等 级:论坛游民
帖 子:14
专家分:24
注 册:2008-12-4
收藏
得分:5 
# define N 3
# define M 4
# include <stdio.h>
void main()
{ int a[N][M],i,j,k,c=0,r=0,b,code;
  printf("input a[N][M]\n");
  for(i=0;i<N;i++)
     { for(j=0;j<M;j++)
         scanf("%d",&a[i][j]);
       printf("\n");
     }
  for(i=0;i<N;i++)
    {  b=a[i][0];
       code=0;
       for(j=0;j<M;j++)
             if(a[i][j]>b)
             {b=a[i][j];
              c=i;
              r=j;
             }
       for(k=0;k<N;k++)
          if(a[k][r]<b)
              code=1;
        if(code)
          continue;
        else
           printf("%d",a[c][r]);
    }
}
 
改成这样运行结果是正确的,你的程序里面首先b没有赋初值,另外for(i;i<N;i++)这个循环要去掉,不然你的b找的就是最后一行的最大值,但它不一定是鞍点。
PS:3.14号重新编辑一下,本人测试可以找任何一行鞍点,请大家测试,谢谢!



[ 本帖最后由 cedars 于 2010-3-14 09:28 编辑 ]
2010-03-12 21:39
陈大师
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:231
专家分:1038
注 册:2009-11-4
收藏
得分:5 
# define N 3
# define M 4
# include <stdio.h>
void main()
{int a[N][M],i,j,c,r,cc,rr,b,code=0;
printf("input a[N][M]\n");
for(i=0;i<N;i++)
{   for(j=0;j<M;j++)
         scanf("%d",&a[i][j]);
         printf("\n");
}
b=a[0][0];
for(i=0;i<N;i++)
{  // for(i;i<N;i++)
         for(j=0;j<M;j++)
             if(a[i][j]>=b)
             {    b=a[i][j];
                c=i;
                r=j;
             }
      for(i=0;i<N;i++)
          if(a[i][r]>=b)
            code++;         
  if(code==N)
      printf("%d\n",a[c][r]);
  }
}

2010-03-12 21:52
雾里偷花
Rank: 2
来 自:社会
等 级:论坛游民
帖 子:45
专家分:33
注 册:2009-10-27
收藏
得分:5 
要注意小节~~~
2010-03-12 22:19
qsccsq123
Rank: 1
等 级:新手上路
帖 子:31
专家分:2
注 册:2009-10-15
收藏
得分:0 
b没初值是对的,但楼上的程序还是没结果,3楼只对第一行有效,4楼的没结果
2010-03-13 20:16
陈大师
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:231
专家分:1038
注 册:2009-11-4
收藏
得分:0 
没有结果是因为没有鞍点 你试试这个数组
3 2 1 0
5 4 2 1
6 7 8 9
鞍点就是3
2010-03-13 21:59
cedars
Rank: 2
等 级:论坛游民
帖 子:14
专家分:24
注 册:2008-12-4
收藏
得分:0 
回复 6楼 qsccsq123
又重新编辑了一下,还放在3楼,请大家测试,亲测成功!
2010-03-14 09:29
快速回复:找二维数组鞍点理论上应该是对的,但运行无结果求解答?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021591 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved