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

Đề tài: sắp xếp ma trận đường mưa rơi

  1. #1
    Ngày gia nhập
    05 2010
    Nơi ở
    tp hcm
    Bài viết
    7

    Angry sắp xếp ma trận đường mưa rơi

    mình có một mảng một chiều đã được sáp xếp sẵn như thế này : 1 2 3 4 ... 25
    làm cách nào để đổ vào mảng hai chiều vuông 5x5 với hình dáng như thế này :
    1 2 6 7 15
    3 5 8 14 16
    4 9 13 17 22
    10 12 18 21 23
    11 19 20 24 25

    giúp mình với !!!

  2. #2
    Ngày gia nhập
    06 2011
    Nơi ở
    Hà Nội
    Bài viết
    11

    Trích dẫn Nguyên bản được gửi bởi tinhyeuvietnam09 Xem bài viết
    mình có một mảng một chiều đã được sáp xếp sẵn như thế này : 1 2 3 4 ... 25
    làm cách nào để đổ vào mảng hai chiều vuông 5x5 với hình dáng như thế này :
    1 2 6 7 15
    3 5 8 14 16
    4 9 13 17 22
    10 12 18 21 23
    11 19 20 24 25

    giúp mình với !!!
    có cách thế này
    c
    Code:
    i=1;j=1;k=1; a[1][1]=b[1];
    repeat
         
            neu mà i lẻ thì
            {
                  j++;
                   K++;
                  a[i][j]=b[k];
                  khi j>1 thì 
                  {
                       k++;
                       i++;
                       j--;
                       a[i][j]=b[k];
                  }
             };
             
             neu i chan thi
             {
                   i++;
                   k++;
                   a[i][j]=b[k];
                   khi i>1 thì
                   {
                        k++;
                        i--;
                        j++;
                        a[i][j]=b[k];
                     }
               }
         until khi j=n thi ket thuc
    bây h ta đã sắp xếp được 1 phần rồi, phần còn lai bạn tự làm nha.
    Trên bước đi của thành công không có dấu chân của kẻ lười biếng

  3. #3
    Ngày gia nhập
    07 2011
    Bài viết
    160

    Trích dẫn Nguyên bản được gửi bởi tinhyeuvietnam09 Xem bài viết
    mình có một mảng một chiều đã được sáp xếp sẵn như thế này : 1 2 3 4 ... 25
    làm cách nào để đổ vào mảng hai chiều vuông 5x5 với hình dáng như thế này :
    1 2 6 7 15
    3 5 8 14 16
    4 9 13 17 22
    10 12 18 21 23
    11 19 20 24 25

    giúp mình với !!!
    Nhận xét: Ma trận trên có tổng 2 số đối xứng qua tâm là không đổi, tức là a[ i][j] + a[N - 1 - i][N - 1 - j] = N*N + 1 với mọi i, j thuộc [0, N)
    Vậy chỉ phải làm 1 nửa, 1 nửa còn lại tính theo đối xứng là được

    C Code:
    1.     int i, j, a[N][N];
    2.     int s = N*N + 1;
    3.     for (i = 0; i < N; ++i) {
    4.         for (j = N - i - 1; j >= 0; --j) {
    5.             int diag = i + j;   /* Thuộc đường chéo phụ thứ <i+j+1> */
    6.             int start = diag*(diag + 1)/2 + 1;  /* số nhỏ nhất nằm trên đường chéo này */
    7.             a[i][j] = start + (diag & 1 ? i : j);  /* diag & 1 <==> diag lẻ */
    8.             a[N - i - 1][N - j - 1] = s - a[i][j]; /* đối xứng qua tâm */
    9.         }
    10.     }
    Đã được chỉnh sửa lần cuối bởi fbchicken : 04-08-2011 lúc 02:36 PM.

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

  1. Trao đổi liên kết, trao doi logo, Text Link với các webforumblog (free)
    Gửi bởi nguyenlam14990 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 31
    Bài viết cuối: 13-03-2012, 11:53 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