求马鞍点问题
♥求马鞍点问题。
如果矩阵a中存在一个元素a[i][j]满足这样的条件:
a[i][j]是第i行中值最小的元素,且又是第j列中值最大的元素,则称之为该矩阵的一个马鞍点。设计一个程序计算出 m * n 的矩阵a的所有马鞍点。
public class HousePoint {
public static void MinMax(int[][] a)
{
int m = a.length; //行数
int n = a[0].length; //列数
int[] min = new int[m];
int[] max = new int[n];
for (int i = 0; i < m; i++) //计算每行的最小元素,放入min[i]中
{
min[i] = a[i][0];
for (int j = 1; j < n; j++)
{
if (a[i][j] < min[i])
min[i] = a[i][j];
}
}
for (int j = 0; j < n; j++) //计算每列的最大元素,放入max[i]中
{
max[j] = a[0][j];
for (int i = 1; i < m; i++)
{
if (a[i][j] > max[j])
max[j] = a[i][j];
}
}
for (int i = 0; i < m; i++) //判定是否为马鞍点
for (int j = 0; j < n; j++)
if (min[i] == max[j]) //找到并显示马鞍点
System.out.printf("(%d,%d):%d\n",i,j,a[i][j]);
}
public static void disp(int[][] a)
{
for (int i = 0; i < a.length; i++)
{
for (int j = 0; j < a[i].length; j++)
{
System.out.printf("%4d",a[i][j]);
}
System.out.println();
}
}
public static void main(String[] args) {
int[][] a = {{9,10,2,4},{15,11,7,8},{4,5,3,6}};
System.out.println(" a:");
disp(a);
System.out.println("所有马鞍点:");
MinMax(a);
}
}
运行结果:
作者:cszcoder
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具