求矩阵中所有马鞍点的个数
马鞍点就是在M*N矩形A中,如果元素A(i*J) 注(i*J)是A的下标 ,我打不出来下标,是行中最小值又是列中最大值,A(i*J)就是这个矩阵的一个马鞍点
假设已给出一个4行5列的二维数组,如下
int a[][]={{1,2,3,4,5,},{7,3,4,5,6},{2,1,5,4,3},{5,3,6,5,4}};
请编程求出所有马鞍点
老师做了一点提示,先找行中的最小值,再找列中的最大值,但是我还是不懂。。
我觉得很难。。。期待有高手帮助
求矩阵中所有马鞍点的个数
马鞍点就是在M*N矩形A中,如果元素A(i*J) 注(i*J)是A的下标 ,我打不出来下标,是行中最小值又是列中最大值,A(i*J)就是这个矩阵的一个马鞍点
假设已给出一个4行5列的二维数组,如下
int a[][]={{1,2,3,4,5,},{7,3,4,5,6},{2,1,5,4,3},{5,3,6,5,4}};
请编程求出所有马鞍点
老师做了一点提示,先找行中的最小值,再找列中的最大值,但是我还是不懂。。
我觉得很难。。。期待有高手帮助
初步判断 任何矩阵马鞍点只能有一个 所以一旦发现即可跳出循环
public class Hello {
public static void main(String[] args) {
int a[][]={{10,20,30,40},
{500,38,37,200},
{300,36,34,600},
{4,5,5,7}};
int max=0,min=1000;
int x,y=0;
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
if(a[i][j]<min){
min=a[i][j];
y=j;
x=i;
}
}
for(int j=0;j<4;j++){
if(a[j][y]>max)
{
max=a[j][y];
}
}
if(max==min)
{
System.out.println(max);
break;
}else{
max=0;
min=1000;
}
}
}
}
这是我以前用C语言做的改了一下符合你的要求,你参看着想象你的JAVA,编程都是一样,主要是思想,你应该学了C语言了吧。
#include<stdio.h> #define sz 30 void f(int a[][],int n); int main() { int i,j,size, array[sz][sz]; printf("please input array 大小 size:\n"); scanf("%d",&size); printf("please input array[][]:\n"); for(i=0;i<size;i++) for(j=0;j<size;j++) scanf("%d",&array[i][j]); f(array,size); return 0;
} void f(int a[][],int n) { int i,j,k,x,y,min,max,rowx,count=0; for(i=0;i<n;i++) { min= a[i][0]; for(j=0;j<n;j++) { if( a[i][j]<min) { min= a[i][j]; x=i; y=j; } rowx=x; max= a[x][y]; for(k=0;k<n;k++) { if( a[k][y]>max) { max= a[k][y]; x=k; } } } if(rowx==x) { count++; printf("array's %d row %d scol 鞍点值:%d.\n",x,y, a[x][y]); } } printf("鞍点总数为: %d\n",count); }
戒烟的好方法是什么? |
弦月梦影具体在哪个电视台播 |
大话西游,怎样能赚钱? |
形容脚步的句子 |
CF什么时候封?? |
初恋难一起 |
雅特制衣厂在什么地方啊,我要过去处理事情 |
有什么搞笑的东东 |
甘肃天水的灾情 |
QQ需要多少级才能建群? |
全自动洗衣机显示c3是什么意思 |
企业春节祝福短信,求一条节日祝福短信…发给 |
传销和直销差别在哪 |
剑魂和狂战士单刷哪个好? |
牛肉丝怎样炒口感嫩 |