• #1
    Tham gia
    21-04-2008
    Location
    Hà Nội
    Bài viết
    54
    Like
    0
    Thanked 0 Times in 0 Posts

    Ngạc nhiên Tìm điểm yên ngựa của ma trận

    Yên ngựa là điểm có giá trị là min của hàng và cũng là max của cột.
    VD:
    6 7 8
    5 2 3
    3 4 6
    Thì 6 là yên ngựa.

    Mình duyệt theo hàng, tìm ra min, duyệt tiếp theo cột của min đó tìm max, nếu min đó cũng là max thì đó là yên ngựa.
    Ý tưởng là như vậy, nhưng lập trình thì ko ra các bạn ơi, mình yếu món này quá, chỉ mình với nha.
    Đây là code mình thử làm:
    Code:
    package testyenngua;  import java.util.*;    public class Main {      static int sh,sc;            public static void main(String[] args) {          int arr[][] = new int[10][10];                  Input(arr);          System.out.println();          Show(arr);          System.out.println();          YenNgua(arr);      }        public static void Input(int arr[][]) {          Scanner input = new Scanner(System.in);          System.out.print("Nhap so hang: ");          sh = input.nextInt();          System.out.print("Nhap so hang: ");          sc = input.nextInt();          for(int i=0; i<sh; i++) {              for(int j=0; j<sc; j++) {                  System.out.print("Nhap phan tu [" +i+ " ; " +j+ "] = ");                  arr[i][j] = input.nextInt();              }          }      }        public static void Show(int arr[][]) {          System.out.println("Hien thi ma tran");          for(int i=0; i<sh; i++) {              for(int j=0; j<sc; j++) {                  System.out.printf("%5d",arr[i][j]);              }              System.out.println();          }      }        public static int YenNgua(int arr[][]) {          int y=0;          int min=arr[0][0];          int max=arr[0][0];          for(int i=0; i<sh; i++) {              for(int j=0; j<sc; j++) {                  if(min<arr[i][j]) {                      min=arr[i][j];                  }              }              for(int k=0; k<sc; k++) {                  if(arr[i][k]>max) {                      max=arr[i][k];                                      }                  if((max==min)&&(i==k)) {                      y=max;                  }              }                      }          return y;      }    }
    Mình cần gấp quá, mong giúp đõ sớm.
    Quote Quote

  • #2
    Tham gia
    20-12-2008
    Bài viết
    9
    Like
    0
    Thanked 0 Times in 0 Posts
    public static int YenNgua(int arr[][]) {
    int min;
    int max;
    int n=0;
    for(int i=0;i<sh;i++)
    {

    min=arr[i][0];
    for(int j=0;j<sc;j++)
    {
    if (min>arr[i][j]) {min=arr[i][j];n=j;} //kiem tra nho nhat hang
    }
    max=min;
    for(int j=0;j<sh;j++)
    {
    if(max<arr[j][n])max=arr[j][n]; //kiem tra lon nhat cot
    }
    if(max==min) return max;
    }
    }
    chuc ban thanh cog

  • #3
    Tham gia
    21-04-2008
    Location
    Hà Nội
    Bài viết
    54
    Like
    0
    Thanked 0 Times in 0 Posts
    Thanks bạn, để mình test thử xem code của bạn, các bạn tham khảo code này của mình nhé, mình thấy còn hơi dài, bạn nào code ngắn hơn cho mình tham khảo với nha.
    Code:
            int minhang[] = new int[10];          int maxcot[] = new int[10];          for (int i=0; i<sh; i++) {              minhang[i] = arr[i][0];              for(int j=0; j<sc; j++) {                  if (minhang[i] > arr[i][j]) {                      minhang[i] = arr[i][j];                  }              }          }            for (int j=0; j<sc; j++) {              maxcot[j] = arr[0][j];              for(int i=0; i<sh; i++) {                  if (maxcot[j] < arr[i][j]) {                      maxcot[j] = arr[i][j];                  }              }          }            for (int i=0; i<sh; i++) {              for (int j=0; j<sc; j++) {                  if((arr[i][j] == minhang[i]) && (arr[i][j] == maxcot[j])) {                      System.out.println("Yen ngua = " +arr[i][j]);                  }                             }          }

  • Chưa có bình luận nào, bạn hãy là người đầu tiên bình luận cho bài viết này.
    Bạn cần Đăng nhập để bình luận bài viết
    ĐĂNG KÝ THIẾT KẾ

    CHAT VỚI

    X HOME - THINKDIFFERENTLY * NGÔI NHÀ ĐẶC BIỆT - SUY NGHĨ KHÁC BIỆT chuyên thiết kế, thi công xây dựng, nội thất, sơn bả thạch cao, mỹ thuật, sân vườn tiểu cảnh, cây cảnh, cây công trình. Hotline: 0965.163.169 - 0975.163.169 - 0949.163.169 - 0902.112.114 - 0915.511.577