1489 数据结构:矩阵鞍点

本文分析了一种矩阵寻值算法的问题,指出该算法虽然能够通过所有测试案例(AC),但在处理特定类型的矩阵(行最小、列最大且值相等)时存在不足。通过具体的例子说明了正确的输出应如何,并提供了包含错误的算法代码,以便读者理解和改进。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

即使AC,但此算法仍有不足之处,不能正确处理行最小、列最大+相等的矩阵情况。

2 2
   2 3

应为A[1][1]、A[2][1]

 1 #include <iostream>
 2 #define MAX_SIZE 100+1
 3 using namespace std;
 4 int array[MAX_SIZE][MAX_SIZE];
 5 void creatMatrix()
 6 {
 7     int m,n,iMax,jMax,count=0;//当前列中最大元素的行下标、列下标
 8     scanf("%d%d",&m,&n);
 9     int minRow[m],maxCol[n];
10     for (int i = 1; i <= m; ++i)
11     {
12         scanf("%d",&array[i][1]);
13         minRow[i]=array[i][1];
14         for (int j = 2; j <= n; ++j)
15         {
16             scanf("%d",&array[i][j]);
17             if(array[i][j]<minRow[i]) minRow[i]=array[i][j];
18         }
19     }
20     for (int j = 1; j <= n; ++j)//遍历每一列
21     {
22         maxCol[j]=array[1][j]; iMax=1,jMax=j;
23         for (int i = 1; i <= m; ++i)
24             if(maxCol[j]<array[i][j])
25             {
26                 maxCol[i]=array[i][j];
27                 iMax=i; jMax=j;
28             }
29         if(array[iMax][jMax]==minRow[iMax])
30         {
31             count==0 ? printf("A[%d][%d]",iMax,jMax ):printf(" A[%d][%d]",iMax,jMax );
32             count++;
33         }
34     }
35     if(count==0) printf("NO.");
36     printf("\n");
37 }
38 int main(int argc, char const *argv[])
39 {
40     #ifndef _OJ_  //ONLINE_JUDGE
41     freopen("input.txt", "r", stdin);
42     #endif
43     int num;
44     scanf("%d",&num);
45     while(num--)
46     {
47         creatMatrix();
48         if(num>0) printf("\n");
49     }
50     return 0;
51 }

 

转载于:https://www.cnblogs.com/swanGooseMan/p/4290905.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值