Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 13 kết quả

Đề tài: Bài tập C | sắp xếp ma trận theo hình zic zắc

  1. #1
    Ngày gia nhập
    04 2009
    Bài viết
    6

    Mặc định Bài tập C | sắp xếp ma trận theo hình zic zắc

    Em tìm mãi mà ko thấy trên 4run có bài đó.Em đang cần bài đó gấp.ai co link thì cho hoặc cho em code đó cũng được.
    Yêu cầu bài toán như sau:
    VD: ma trân ban đâu
    1 2 3 4
    5 6 7 8
    9 10 11 12
    13141516
    sau khi sắp xếp ma trận có dạng như sau
    1 2 3 4
    13 12 5 15
    14 6 11 16
    7 8 9 10
    đại loại là nó giống giống cài hình nè:

  2. #2
    Ngày gia nhập
    03 2009
    Nơi ở
    Ở địa ngục
    Bài viết
    667

    Xin hỏi bạn 1 chút:
    Nếu ma trận vuông có kích thước lẻ: Thế số tại tâm thì tính sao?
    Hình như bài này chỉ dùng cho ma trân vuông cấp 4 thì phải.

    Cách của mình
    Dùng dãy phụ, đổ ra dãy, sắp xếp, cắt nhỏ dãy đã sắp xếp ra rồi lưu lên ma trận theo yêu cầu.

    Mà bạn cho mình hỏi các số 13 -> 16 hình như ko theo quy luật của bạn. có phải quy luật như hình đính kèm ko? (phần cong là bước nhảy)


    Mình cho bạn cách làm thôi, chứ code thì bạn tự làm hoặc chờ thành viên khác nhiệt tình hơn mình cho bạn nhé.
    Attached Thumbnails Attached Thumbnails untitled.JPG  
    Đã được chỉnh sửa lần cuối bởi trungkien45 : 29-04-2009 lúc 08:46 PM.

  3. #3
    Ngày gia nhập
    11 2008
    Bài viết
    203

    Thật sự mình không hiểu cái quy luật của chủ Thớt, nếu không thì mình đã giúp rồi. Bạn cần cho ví dụ cụ thể hơn đi. Hoặc bạn có thể cho mình đường link nói về cái zic-zắc này đi.
    Tôi tin rằng: giải thuật thì có thể tìm trong hàng trăm GB ebook, hoặc Google nhưng code chạy thì chưa chắc! Hãy post code để chứng tỏ giải thuật của bạn là đúng!
    Giải thuật là bản thiết kế của ngôi nhà, code là phần xây dựng. Nếu chỉ xây nhà trên giấy thì ta sống chả khác nào người nguyên thủy.

  4. #4
    Ngày gia nhập
    03 2009
    Nơi ở
    Ở địa ngục
    Bài viết
    667

    Thì mình đã nói cái đề này chỉ dùng cho ma trận vuông cấp 4 thôi. Còn ma trận cấp khác chắc phải dùng quy luật khác.
    Nếu là ma trận cụ thể và có quy luật cụ thể thì có thể cắt nhỏ 1 dãy số đã sắp xếp rồi đưa lên ma trận.

    @thangco: Mình chỉ đưa ra gợi ý thôi. Nếu là bài tập của bạn thì bạn làm theo gợi ý của mình nhé, đừng trông chờ người khác, tự mình làm được thì mới có được sự hứng khởi phải không?
    Đã được chỉnh sửa lần cuối bởi trungkien45 : 29-04-2009 lúc 10:20 PM.

  5. #5
    Ngày gia nhập
    04 2009
    Bài viết
    6

    đối với ma trận lẻ ở điểm giao nhau của đường chéo ta sẽ dung cái này để loại bỏ nó đi:
    x=y=(n+1)/2
    đó là điểm giao nhau khi kiểm tra ma vào trường hợp trên ta sẽ ko đẩy số vào nữa mà bỏ quả.
    ( x ban đầu gán bằng n-1 và giảm dần, y bằng 2 và tăng giần, mấy huynh vẽ cái hình ra rồi kẻ sẽ hiểu cách của em gán x và y.khi nào x = min = 1 thì y sẽ max =n khi đó ta se giữ nguyên y và tăng x.đến khi x=max thì ra giảm ca x và y đi là xong)
    em có ý tưởng như thế nhưng vì kém môn này lên không viết thành code đươcj.
    mọi người giúp em với nhé.

  6. #6
    Ngày gia nhập
    11 2008
    Bài viết
    203

    Mặc định Bài tập C | sắp xếp ma trận theo hình zic zắc

    Mình nghĩ là mình có thể code được bài này nếu mình hiểu cách làm của nó, nhưng thực sự, nhìn vào mấy cái hình vẽ này nọ, mình không đủ thông minh để hiểu. Bạn có thể giải thích rõ hơn để mình hiểu không, cho vài cái ví dụ đi.
    Tôi tin rằng: giải thuật thì có thể tìm trong hàng trăm GB ebook, hoặc Google nhưng code chạy thì chưa chắc! Hãy post code để chứng tỏ giải thuật của bạn là đúng!
    Giải thuật là bản thiết kế của ngôi nhà, code là phần xây dựng. Nếu chỉ xây nhà trên giấy thì ta sống chả khác nào người nguyên thủy.

  7. #7
    Ngày gia nhập
    04 2009
    Bài viết
    6

    Trích dẫn Nguyên bản được gửi bởi Loveanygirls Xem bài viết
    Mình nghĩ là mình có thể code được bài này nếu mình hiểu cách làm của nó, nhưng thực sự, nhìn vào mấy cái hình vẽ này nọ, mình không đủ thông minh để hiểu. Bạn có thể giải thích rõ hơn để mình hiểu không, cho vài cái ví dụ đi.
    nói thế nào để bạn hiểu được nhỉ:Ban đầu mình nhập 1 ma trận bất kỳ,sau đó sắp xếp nó thành hình giống cái hình bên trên.
    Bài toán chỉ áp dụng cho ma trân vuông.
    Trường hợp ma trận lẻ mình nghĩ cách loại phẩn tử giao nhau của mình la đúng.

  8. #8
    Ngày gia nhập
    04 2009
    Bài viết
    6

    ai bít thì cho em đoạn code đi.Thứ hai em phải có bải rồi.
    Rất mong đuwocj mọi người giúp đỡ cám ơn nhiều

  9. #9
    Ngày gia nhập
    11 2008
    Bài viết
    203

    Mình đã hiểu được ý tưởng của bạn rồi! Bạn muốn thực hiện công việc với ma trận cấp n*n với n>=2 tùy ý đúng không?
    Đây là đoạn code mình search được trên mạng, tuy nhiên, nó có kiểu ziczac khác của bạn, mình nghĩ là có thể lấy ý tưởng này để edit thành bài của bạn.
    link:_http://taiachau.com/4rum/viewtopic.php?f=88&t=811&start=0&sid=ab14b28392073 8a3961c4919de22e7b9
    PHP Code:
    #include <stdio.h>
    #include <conio.h>

      
    void NhapCotDong(int &cot,int &dong);
      
    void NhapMangThayMaTran(int Mang[],int cot,int dong);
      
    void XuatMangThayMaTran(int Mang[],int cot,int dong);
      
    void SapXepMang1Chieu(int Mang[], int cotint dong);
      
    void ThietLapMaTranZicZac(int Mang[],int MaTranZicZac[][10], int cotint dong);
      
    void XuatMaTran(int a[][10], int cot,int dong);
    int main()
      {
         
    int Mang[100];
         
    int cot;
         
    int dong;
         
    NhapCotDong(cot,dong);
         
    NhapMangThayMaTran(Mang,cot,dong);
         
    printf("\n\tMa tran vua nhap vao: \n");
         
    XuatMangThayMaTran(Mang,cot,dong);
         
    SapXepMang1Chieu(Mang,cot,dong);
         
    int MaTranZicZac[10][10];
         
    ThietLapMaTranZicZac(Mang,MaTranZicZac,cot,dong);
         
    printf("\n\tMa tran Zic Zac:\n");
         
    XuatMaTran(MaTranZicZac,cot,dong);
         
    getch();
      }
      
    void NhapCotDong(int &cotint &dong)
      {
         
    printf("Nhap so cot: ");   scanf("%d", &cot);
         
    printf("Nhap so dong: "); scanf("%d", &dong);
      }
      
    void NhapMangThayMaTran(int Mang[],int cot,int dong)
      {
         for (
    int i=0stt 0i<dongi++ )
         {
            for (
    int j=0j<cotj++)
            {
               
    printf("\t\t%d/ [%d][%d] = ",stt+1ij);
               
    scanf("%d", &Mang[stt]);
               
    stt++;         
            }
         }
      }
      
    void XuatMangThayMaTran(int Mang[],int cot,int dong)
      {
         
    printf("\t------------------------\n");
         for (
    int i=0,stt 0i<dongi++)
         {
            
    printf("\t");
            for (
    int j=0j<cotj++)
            {
               
    printf("%4d"Mang[stt]);
               
    stt++;
            }
            
    printf("\n");
         }
         
    printf("\t------------------------\n");
      }
      
    void SapXepMang1Chieu(int Mang[], int cotint dong)
      {
         
    int temp;
         for (
    int i=0;<(cot*dong)-1i++)
         {
            for (
    int j=i+1j<(cot*dong); j++)
            {
               if(
    Mang[i]>Mang[j])
               {
                  
    temp Mang[i];
                  
    Mang[i]=Mang[j];
                  
    Mang[j]=temp;
               }
            }
         }
      }
      
    void ThietLapMaTranZicZac(int Mang[],int MaTranZicZac[][10], int cotint dong)
      {
         
    int dem 0;
         
    int i=0j=0;
         do
         {
            for (
    ii<dong i++)
            {
                                
    MaTranZicZac[i][j] = Mang[dem];       dem++;
            }
                    
    j++;
                    
    i--;
                    if (
    dem == cot*dong)
                    {
                                return;
                    }
                    for (
    ii>-1i--)
                    {
                                
    MaTranZicZac[i][j] = Mang[dem];       dem++;
                    }
                    
    i++;
                    
    j++;
         } while (
    dem != cot*dong);
      }
      
    void XuatMaTran(int a[][10], int cot,int dong)
      {
         
    printf("\t------------------------\n");
         for (
    int i=0i<dongi++)
         {
            
    printf("\t");
            for (
    int j=0j<cotj++)
            {
               
    printf("%4d"a[i][j]);
            }
            
    printf("\n");
         }
         
    printf("\t------------------------\n");

    Bạn cứ tham khảo đi, zic zac của nó thế này:


    Còn đây là ma trận vuông cấp 5 và cấp 6, bạn xem đúng hay sai, nếu sai thì sửa lại giúp mình.

    Bạn làm luôn cái ma trận cấp 3 xem thế nào. Khi hiểu chính xác mình mới code được kết quả mong muốn, nếu không, sẽ chạy không như ý muốn.
    Bạn tranh thủ reply, nếu ai code được thì post code nhé!
    Mình sẽ cố gắng, nếu code được, mình sẽ post code vào trước 11 giờ tối ngày mai để bạn kịp nộp bài. Nếu không được thì mình xin lỗi bạn.
    Bây giờ đói rùi, phải măm măm mới được
    Attached Files Attached Files
    Đã được chỉnh sửa lần cuối bởi Loveanygirls : 02-05-2009 lúc 04:27 PM.
    Tôi tin rằng: giải thuật thì có thể tìm trong hàng trăm GB ebook, hoặc Google nhưng code chạy thì chưa chắc! Hãy post code để chứng tỏ giải thuật của bạn là đúng!
    Giải thuật là bản thiết kế của ngôi nhà, code là phần xây dựng. Nếu chỉ xây nhà trên giấy thì ta sống chả khác nào người nguyên thủy.

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

    thực ra tại mình ngu môn C quá.
    Cám ơn bạn nhiều mình xem hiểu được thêm 1 chút.có chỗ vẫn chưa hiểu để minh nghiên cứu thêm đã có gj minh sẽ hỏi thêm.

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

  1. Sắp xếp tăng dần theo dường theo dường chéo phụ của ma trận như thế nào các bạn.
    Gửi bởi phanvanngoc trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 1
    Bài viết cuối: 04-05-2011, 11:08 AM
  2. Bài tập C++ Sắp xếp ma trận theo đường chéo chính
    Gửi bởi murderer trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 13-04-2011, 10:46 AM
  3. sắp xếp ma trận theo tổng tăng dần,tính định thức ma trận
    Gửi bởi hoahoctro207 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 20-12-2010, 02:23 PM
  4. xử lý đồ thị theo ma trận kề
    Gửi bởi banbetuhoi1002 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 27-10-2009, 08:14 PM
  5. Bài tập về ma trận | Cộng trừ nhân chia ma trận theo con trỏ?
    Gửi bởi nhocxinh trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 10
    Bài viết cuối: 12-05-2009, 01:59 AM

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