Từ 1 tới 8 trên tổng số 8 kết quả

Đề tài: Giúp giải bài đếm các số phân biệt trong ma trận

  1. #1
    Ngày gia nhập
    12 2011
    Bài viết
    2

    Mặc định Giúp giải bài đếm các số phân biệt trong ma trận

    Mình có bài tập này muốn nhờ a e giúp giải dùm! :(

    Cho ma trận vuông a x a bao gồm các số nguyên dương trong khoảng [0, 3000] viết hàm đếm xem ma trận a có bao nhiêu giá trị phân biệt.

    Ví dụ cho ma trận:
    1 2 2
    2 7 6
    3 2 6

    Kết quả ra sẽ là: 5

  2. #2
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Giúp thế nào ?
    Ý tưởng của bạn ra sao ?
    Thắc mắc điểm nào
    Um Mani Padme Hum...!!

  3. #3
    Ngày gia nhập
    12 2009
    Nơi ở
    The country of happiness
    Bài viết
    182

    trước tiên bạn phải hiểu rõ về mảng 2 chiều đã.

    bạn đọc bài viết chi tiết về mảng 2 chiều ở đây : http://bcdonline.net/mang-hai-chieu-ma-tran-trong-c/

    chắc chắn sau khi đọc xong bài viết trên bạn sẽ tự giải quyết được bài toán của bạn.
    Trích dẫn Nguyên bản được gửi bởi Wazi Armstrong Xem bài viết
    Ôi skill của mình đã đạt đến hàng tuyệt đỉnh
    Không chỉ ăn, tắm, đi lại có thể code
    Mà giờ đã mình có thể code cả khi ngủ. Code tạm vào buffer của não, lúc nào dậy chỉ việc viết ra một cách trôi chảy không lưỡng lự.
    PS: Nếu ngủ dài rảnh rảnh có thể debug luôn, dậy chỉ việc build ?
    Trích dẫn Nguyên bản được gửi bởi vietanh8286 Xem bài viết
    Lập trình viên giỏi là lập trình viên có vợ

  4. #4
    Ngày gia nhập
    12 2011
    Bài viết
    2

    Trích dẫn Nguyên bản được gửi bởi clchicken Xem bài viết
    Giúp thế nào ?
    Ý tưởng của bạn ra sao ?
    Thắc mắc điểm nào
    Ý tưởng mình là đầu tiên khi duyệt ma trận sẽ đếm phần tử đầu tiên và lưu vào mãng 1 chiều.
    Tiếp đến duyệt típ so sánh phần tử đó với các phần tử trong mảng 1 chiều khi nảy, nếu mà giống thì cho qua không đếm, còn khác thì đếm đồng thời add pt đó vào mảng 1 chiều típ. cứ thế mà đếm.

    Giờ k bít sao để thực hiện ý tưởng đó đây!

  5. #5
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Hiện thực hóa, mình viết cho bạn giả mã theo ý tưởng của bạn.
    Bạn tự code hoàn thiện
    C++ Code:
    1. ma trận vuông m : a*a ;
    2. int danhdau[a*a];  // mảng này để đánh đấu
    3. int k=0; // k này là chỉ số để lắp các phần tử của ma trận m đã dc đánh dấu vào mảng danhdau
    4.  
    5. Duyệt ma trận m (chỉ số i , j)
    6.         if (m[i][j] chưa xuất hiện trong danhdau)
    7.              danhdau[k++]=m[i][j];

    Làm sao để biết 1 số đã xuất hiện trong mảng đánh dấu hay chưa ?
    VIết hàm sau
    C++ Code:
    1. int DaXuatHien(int a[], int n , int x)
    2. {
    3.        Duyệt mảng a
    4.            if(a[i]==x)
    5.                return 1;
    6.        return 0;
    7. }

    Đây là giải thuật theo ý tưởng của bạn.
    Chưa bàn gì đến tối ưu gì cả. Cứ chạy đi cho nó ra đúng kết quả đã rồi thích tối ưu gì thì tối ưu
    Um Mani Padme Hum...!!

  6. #6
    Ngày gia nhập
    10 2010
    Bài viết
    177

    Mặc định Giúp giải bài đếm các số phân biệt trong ma trận

    Cách đơn giản nhất là đổ nó ra mảng 1 chiều. Sau đó dùng 2 vong lặp for duyệt phần tử thứ i và phần tử trước nó. Nếu = nhau thì hạ cờ(= 0). Sau đó kiểm tra nếu cờ = 1. Thì dem++.

    PHP Code:
    #define MAXD 50
    #define MAXC 100

    int DemPhanBiet1Chieu(float a[], int n){

        
    int dem 0// Khởi tạo biến đếm => Đếm các phần tử phân biệt trong mảng
        
    for(int i 0ni++){ // Duệt từ đầu mảng đến cuối mảng
            
    int flag 1// Măc định mảng ko có phần tử trùng nhau
            
    for(int j 0<= 1j++){ // Duyệt các phần tử trước phần tử thứ i
                
    if(a[i] == a[j]) // Nếu tồn tại 2 phần tử =
                    
    flag 0// Hạ cờ
            
    }
            if(
    flag == 1
                
    dem++;
        }
        return 
    dem;
    }



    int DemPhanBiet(float a[][MAXC], int mint n){
        
    float b[100]; // Khai báo mảng b kích thước 100
        
    int k// Chỉ số biến k
        
    0;
        
    // Duyệt wa ma trận => Đưa phần tử ma trận vào mảng 2 chiều b 
        
    for(int i 0mi++)
            for(
    int j 0nj++)
                
    b[k++] = a[i][j];

        return 
    DemPhanBiet1Chieu(bk); // Trả về số lượng phần tử phân biệt trong mảng b

    Đã được chỉnh sửa lần cuối bởi nndung179 : 05-03-2012 lúc 12:07 AM.

  7. #7
    Ngày gia nhập
    12 2011
    Bài viết
    2

    Thank bạn nhìu! mình sẽ ngâm cú! hehe

  8. #8
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Ngâm cứu xong ko biết có vào report không, hay là lặn luôn
    Um Mani Padme Hum...!!

Các đề tài tương tự

  1. Giúp mình về ma trận trong c#
    Gửi bởi vietdaicand trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 05-05-2013, 08:06 PM
  2. Cần giúp đỡ về thiết kế form và cơ sở dữ liệu để tạo 1 web thi trắc nghiệm đơn giản
    Gửi bởi tanhien90vn trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 04-04-2012, 08:25 PM
  3. Bài tập C++ giúp mình giải bài tập về mảng 1 chiều và ma trận
    Gửi bởi hgtechvn trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 30-11-2011, 08:55 PM
  4. Xây dựng các cặp Ma trận Latinh trực giao, giúp mình
    Gửi bởi hello.zuzu trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 26-10-2010, 05:47 PM
  5. Giúp giải: ma trận cột, hàng, xoắn ốc ...!!
    Gửi bởi maihung1989dn trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 19-05-2010, 04:43 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn