| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 499 人关注过本帖
标题:c语言问题求解啊。想好长时间了。
只看楼主 加入收藏
ppvae
Rank: 1
等 级:新手上路
帖 子:25
专家分:2
注 册:2014-1-18
结帖率:85.71%
收藏
已结贴  问题点数:20 回复次数:3 
c语言问题求解啊。想好长时间了。
#include<stdio.h>
 int main(void)
 {  int count=0,count1=0;
   int a[6][6];
   int i,j,n,b,c;
   printf("Input n:");
   scanf("%d",&n);
   printf("input array:\n");
   for(i=0;i<n;i++){
     for(j=0;j<n;j++)
       scanf("%d",&a[i][j]);
     }
   for(i=0;i<n;i++){
     for(j=0;j<n;j++)
       b=i;c=j;
       for(j=0;j<n;j++){
          if(a[b][c]>a[b][j])
             count++;
          }
       for(i=0;i<n;i++){
          if(a[b][c]<a[i][c])
           count1++;
          }

      if((count==n-1)&&(count1==n-1)){
          printf("a[%d][%d]=%d",b,c,a[b][c]);}
        else{

             i=b;j=c;count=0;count1=0;}
       }


   getch();
   return 0;
   }
  题目是输入一个正整数n(1《n《6)和n阶矩阵a中的元素,如果找到a的鞍点(鞍点的元素值在该行最大,在该列最小),就输出它的下标。
搜索更多相关主题的帖子: include c语言 count 
2014-01-19 11:37
so_love
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:7
帖 子:812
专家分:4151
注 册:2013-11-25
收藏
得分:0 
最好把你的问题具体说一下,哪里有问题?
我的水平不太好。你的这个代码我看不太懂。


我就简单的说一下我的思路吧。
自我理解:你这是找矩阵中行最大列最小的一个点,如果是我的话,我可能会从第一行开始找,先找这一行最大的点,然后对比他是不是在该列中最小,如果是的话,就打印,如果不是就到下一行查找。

一花一世界、一叶一追寻、片片花叶落、情系何人身。
2014-01-19 14:36
ppvae
Rank: 1
等 级:新手上路
帖 子:25
专家分:2
注 册:2014-1-18
收藏
得分:0 
回复 2楼 so_love
我是这样想的,一个一个元素找。满足两个条件。在该行最大,执行count++,如果它在该行最大,那么count应该为n-1,同样的,如果在该列最小,count1应该也等于n-1,这样就满足在该行最大在该列最小两个条件。
2014-01-19 19:08
DacLip123
Rank: 2
等 级:论坛游民
帖 子:4
专家分:20
注 册:2014-1-24
收藏
得分:20 
我是这样想的:先遍历数组,在一行中找出最大的值,记录它的列坐标,然后判断它在这一列中是否最小,如果是则打印,否则略过。
以下附上代码,希望对你有帮助

#include<stdio.h>
int main()
{
    int a[6][6]={0};
    int n,j,k;
    printf("Input n:\n");
    scanf("%d",&n);
    printf("input array:\n");
    for(j=0;j<n;j++)
        for(k=0;k<n;k++)
            scanf("%d",&a[j][k]);
    int b,c,i,count1=0,count2=1;
    j=0;
    for(b=0;b<n;b++)
    {
        for(c=0;c<n;c++)
            for(j=0;j<n;j++)
                if(a[b][j]>a[b][c])
                        count1=j;
        for(i=0;i<n;i++)
            if(a[b][count1]>a[i][count1])
            {
                count2=0;
                break;
            }
        if(count2)
            printf("a[%d][%d]=%d",b,count1,a[b][count1]);
        count2=1;
    }
    return 0;
}
2014-01-25 13:22
快速回复:c语言问题求解啊。想好长时间了。
数据加载中...
 
   



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

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