当前位置:编程学习 > JAVA >>

问一个JAVA问题

定义:对于一个二维数组,当某个元素值在其所在行最大、其所在列最小时,称此元素为该数组的一个鞍点。一个数组可能有多个鞍点,也可能没有鞍点。

编写一个类Andian,求任意一个二维数组的鞍点。功能要求:由键盘输入一个任意的二维数组,输出该数组所有的鞍点的位置和数值,无鞍点时输出提示“该数组无鞍点”。

程序源代码:

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

public class Andian

{

//此处填入源代码

}

测试数组a[3][3]

1 2 3

4 5 6

7 8 9

运行结果应为:鞍点为第一行第3列的元素,值为3

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

追问:题目求求任意一个二维数组的鞍点
答案:我写了一个你试试看

package common;

import java.util.Scanner;

public class test {

public static void main(String[]args){
test t = new test();
t.andian();
}

public void andian(){
Scanner input = new Scanner(System.in);
System.out.print("请输入数组的行数:");
int hangN = input.nextInt();
System.out.print("请输入数组的列数:");
int lieN = input.nextInt();

int hang[] = new int[hangN];
int lie[] = new int[lieN];

int[][] arr = new int[hangN][lieN];
for(int i=0; i<hangN; i++){
for(int j=0; j<lieN; j++){
System.out.print("请输入第"+(i+1)+"行第"+(j+1)+"列的值:");
arr[i][j]=input.nextInt();
}
}

for(int i = 0; i<hangN; i++){
hang[i] = arr[i][0];
for(int j=0; j< lieN; j++){//找到行最大值,存储到行临时集合

if(hang[i]<arr[i][j]){
hang[i]=arr[i][j];
}
}
}
for(int i = 0; i<lieN; i++){
lie[i] = arr[0][i];
for(int j=0; j< hangN; j++){//找到列最小值,存储到列临时集合

if(lie[i]>arr[j][i]){
lie[i]=arr[j][i];
}
}
}
// for(int i=0; i<hangN; i++){
// System.out.print(hang[i]);
// }
// for(int i=0; i<lieN; i++){
// System.out.print(lie[i]);
// }

//其中行最大和列最小相同值的数所在的点即为按点
for(int i=0; i<hangN; i++){
for(int j=0; j<lieN; j++){
if(hang[i]==lie[j]){
System.out.println("第"+(i+1)+"个按点所在的位置是:第"+(i+1)+"行,第"+(j+1)+"列值为:"+hang[i]);
}
}
}
}

}

public class Andian {

public static void main(String[] ags) {
int map[][] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
int l = 3;
int h = 3;
int hash[][] = { { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 } };

for (int i = 0; i < l; i++) {// 找到每列最小的数
int t = map[0][i];
int pj = 0;
for (int j = 1; j < h; j++) {
if (map[j][i] < t) {
t = map[j][i];
pj = j;
}
}
hash[pj][i]++;
}

for (int i = 0; i < h; i++) {// 找到每行最大的数
int t = map[i][0];
int pi = 0;
for (int j = 1; j < l; j++) {
if (map[i][j] > t) {
t = map[i][j];
pi = j;
}
}
hash[i][pi]++;
}

for (int i = 0; i < h; i++) {//hash中累计是2的点是鞍点
for (int j = 0; j < l; j++) {
if (hash[i][j] == 2) {
System.out.println("鞍点为第" + (i + 1) + "行第" + (j + 1)
+ "列的元素,值为" + map[i][j]);
}
}
}
}

}

a[2][3]={{1,2},{3,4},{5,3}}你是说接收一个这样的数组?

兄弟 容我说一句 学习Java千万别一看不会敲,就上问问来了,这样是没有效果的,你可以试着自己想想,千万别这样,这样会形成依赖心理,以后工作了,那就是残废了~!一无是处~!

上一个:JAVA是指什么?
下一个:java中的数据类型

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,