
正文
鞍点列优先java代码 有鞍点的矩阵
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
JAVA 设计一个5X5的二维数值型数组,查找该数组是否存在鞍点,如果有,打印以及该元素所处的位置
/*JAVA 设计一个5X5鞍点列优先java代码的二维数值型数组鞍点列优先java代码,
查找该数组是否存在鞍点鞍点列优先java代码,如果有鞍点列优先java代码,打印以及该元素所处的位置
鞍点就是该位置上的元素在该行最大并且在该列上最小*/
public class Array0 {
public static void main(String[] args){
int[][] arr=new int[5][5];//定义一个5*5的二维数组
for(int i=0;i5;i++){
for(int j=0;j5;j++){
arr[i][j]=(int)(Math.random()*100);//给数组中的元素随机赋值
}
}
System.out.println("二维数组中的元素:");
for(int i=0;iarr.length;i++){
for(int j=0;jarr.length;j++){
System.out.print(arr[i][j]+" ");//打印
}
System.out.println();
}
for(int a=0;a5;a++){//找出第a行上的最大值鞍点列优先java代码,并找出最大值所在的列
int max=arr[a][0];
int x=0;
for(int b=0;b5;b++)
{if(arr[a][b]max){br max=arr[a][b];br x=b;br }
}
for(int c=0;c5;c++){//判断第a行的最大值是不是所在的列的最小值
if(maxarr[c][x]){break;}//如果没有鞍点不输出,有鞍点则输出鞍点
if(c4) {continue;}
System.out.println("鞍点为:arr["+a+"]["+x+"]");
}
}
}
} 由于数组是随机赋值,所以,有时候是没有鞍点,只输出数组,多运行几次直到出现鞍点就可以了
相关问答
Q1: java输出马鞍数
package com.njty.test;
/**
* 马鞍数
* @author Administrator
*
*/
public class MAS {
/**
* @param args
*/
public static void main(String[] args) {
//定义二维数组
int arrays[][] = {
{5,6,3,8,9},
{4,5,6,7,8},
{3,4,5,2,1},
{2,3,4,9,0},
{1,2,5,4,8}
};
boolean flag = true; //用于标记是否是马鞍数
for(int i = 0; i 5; i++){
int tempM = arrays[i][0]; //首先将第一行第一列数假设就是马鞍数
int tempi = 0; //用于行判断
int tempj = 0; //用于存储每行最小数所在鞍点列优先java代码的列数
for(int j = 0; j 5; j++){
if(arrays[i][j] tempM){//找到行中最小鞍点列优先java代码的数
tempM = arrays[i][j];
tempj = j; //保存最小数的列数
}
}
while(tempi 5){
if(tempM arrays[tempi][tempj]){//判断是否是列中最大的数
flag = false; //不符合条件则将标记置为false
}
tempi++;
}
if(flag){
System.out.println("马鞍数是 第"+(i+1)+"行第"+(tempj+1)+"列的数:"+tempM);
}
}
if(!flag){
System.out.println("该组数中不存在马鞍数鞍点列优先java代码!");
}
}
}
Q2: 36、找出一个二维数组中的鞍点。即该位置上的元素在该行上最大,在该列上最小,也可能没有鞍点。
//求一个m*n矩阵鞍点列优先java代码的鞍点,将位置下标存储在i,j,返回值为鞍点鞍点列优先java代码的值
//若找不到鞍点,返回0,同时将i,j置为-1
//注意:这里将二维数组当成一维传入,是为鞍点列优先java代码了方便处理
//因为C++对二维数组作函数参数有限制
//要访问a的第i行j列元素,使用a[i*n+j]来访问
//数组元素下标从0开始,而不是1
int saddle(int *a, int m, int n,int *i,int *j)
{
int x,y;
int max,min;
for (x=0;xm;x++)
{
*i = x;
*j = 0;
max = a[x*n];
for (y=0;yn;y++) //先找每行最大的元素
{
if (a[x*n+y]max)
{
max = a[x*n+y];
*j = y;
}
}
min = max;
for (y=0;ym;y++)
{
if (a[y*n+(*j)]min)
{
min = a[y*n+(*j)];
break; //若不是列上最小则break;
}
if (max == min) //判断最到的行最大和列最小是否相等
{
return max;
}
}
*i = -1;
*j = -1;
return 0; //没有找到
}
在main中调用
main()
{
int a[3][4]={1,2,3,7;6,4,2,8;9,10,16,1} //这是鞍点列优先java代码你要的数组,自己修改
int i,j;
int value;
//注意调用格式,有个强制类型转换,还有i,j要取址
value = saddle((int*)a, 3, 4, i, j);
if (value)
{
cout"The Saddle is A["i"]["j"]=="valueendl;
}
else
{
cout"There is no Saddle"endl;
}
return 0;
}
这个程序有一个小问题,不能求值为0的鞍点,不过将就用吧。
Q3: 求二维数组的马鞍点 java
class mypoint
{
public static void main (String args[])
{
int a[][]={{1,2,3,4,5},{7,3,4,5,6},{2,1,5,4,3},{5,3,6,5,4}};
int i,j,temp;
int maxa[][]=new int [4][5];
int mina [][]=new int [4][5];
//求出行中最小值并标记
for(i=0;ia.length;i++)
{
temp=a[i][0];
for(j=1;ja[i].length;j++)
if (a[i][j]temp)
temp=a[i][j];
for (j=1;ja[i].length;j++)
if(a[i][j]==temp)
mina[i][j]=1;
}
//求出列中最大值并标记
for(j=0;ja[0].length;j++)
{
temp=a[0][j];
for(i=1;ia.length;i++)
if (a[i][j]temp)
temp=a[i][j];
for (i=1;ia.length;i++)
if(a[i][j]==temp)
maxa[i][j]=1;
}
//打印输出矩阵
for(i=0;ia.length;i++)
{
for(j=0;ja[i].length;j++)
System.out.print(" "+a[i][j]+" ");
System.out.println();
}
//求马鞍点并打印输出
for(i=0;ia.length;i++)
{
for(j=0;ja[i].length;j++)
if(mina[i][j]+maxa[i][j]==2)
System.out.println(" "+i+"行"+j+" 列是一个马鞍点值 ="+a[i][j]);
}
}
}
Q4: java二维数组求鞍点
package andian;
public class DoMain {
public static void main(String[] args) {
int[][] num = new int[][]{{11,8,3},{4,15,6},{7,8,9}};
getAnDian(num);
}
private static void getAnDian(int[][] num){
if(num == null || num.length == 0 || num[0].length == 0){
System.out.println("未传入数组或传入数组不正确!");
return;
}
int h = num.length;//二维数组的行数
int v = num[0].length;//二维数组的列数
for(int i = 0; i h; i++){
for(int j = 0; j v; j++){
System.out.print(num[i][j] + "\t");
}
System.out.println();
}
int temp = 0;
int index = 0;
boolean flag = true;
for(int i = 0; i h; i++){
temp = num[i][0];
flag = true;
for(int j = 1; j v; j++){
if(temp num[i][j]){
temp = num[i][j];
index = j;
}
}
for(int k = 0; k h; k++){
if(temp num[k][index]){
System.out.printf("第%d行没有鞍点\n",i+1);
flag = false;
break;
}
}
if(flag)
System.out.printf("第%d行的鞍点为%d\n",i+1,temp);
}
}
}
Q5: java从键盘输入一个数组,找出其中的鞍点
/*
程序的功能:
求任意的一个m×n矩阵的鞍点——鞍点是指该位置上的元素在该行上为最大、在该列上为最小,
矩阵中可能没有鞍点,但最多只有一个鞍点。
m、n(2=m=20、2=n=20)及矩阵元素从键盘输入(只考虑int型和每行、每列中没有并列最大/最小的情况)。
*/
public static void main(String[] args) {
int[][] arr = new int[20][20];
int m, n;
int max, min;
int maxHPos, maxLPos, minHPos, minLPos;
int flag = 0;
Scanner sc = new Scanner(System.in);
System.out.println("请输入m的值:");
m = sc.nextInt();
System.out.println("请输入n的值:");
n = sc.nextInt();
/* 从键盘输入m×n矩阵,并存放到数组arr中 */
System.out.println("请输入矩阵的值:");
for (int i = 0; i m; i++) {
for (int j = 0; j n; j++) {
arr[i][j] = sc.nextInt();
}
}
/* 在矩阵中找鞍点 */
for (int i = 0; i m; i++) {
/* 找第i行的最大值及最大值的下标(包括行标和列标),i的值从0开始 */
max = arr[i][0];
maxHPos = i;
maxLPos = 0;
for (int j = 1; j n; j++) {
if (arr[i][j] max) {
max = arr[i][j];
maxHPos = i;
maxLPos = j;
}
}
/* 在第i行的最大值所在列找该列的最小值及其下标 */
min = arr[0][maxLPos];
minHPos = 0;
minLPos = maxLPos;
for (int k = 1; k m; k++) {
if (arr[k][maxLPos] min) {
min = arr[k][maxLPos];
minHPos = k;
minLPos = maxLPos;
}
}
/* 判断第i行的最大值是否是第i行最大值所在列的最小值,如果是,找到鞍点*/
if ((maxHPos == minHPos) (maxLPos == minLPos)) {
System.out.println(String.format("有鞍点:arr[%d][%d]=%d", maxHPos,
maxLPos, arr[maxHPos][maxLPos]));
flag = 1; //给变量flag赋值1,表示鞍点已找到
break; //鞍点已找到,结束查找过程
}
}
if (0 == flag) //flag的值为0,表示在矩阵中没有找到鞍点
{
System.out.println("没有鞍点");
}
}
关于鞍点列优先java代码和有鞍点的矩阵的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






