Announcement

Collapse
No announcement yet.

bài tập mảng 2 chiều chưa biết cách làm

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • bài tập mảng 2 chiều chưa biết cách làm

    Bai 1 : Sắp xếp ma trận tăng dần từ trái qua phải và từ trên xuống dưới.
    Bài 2: Tạo ma trận vuông xoắn ốc.

    Nhờ các anh chị đi trước chỉ giúp em với ạ à e chưa học hàm con nha m.n ^_^ hì :3 mong ace giúp đỡ viết theo C++ hoặc cho e cái code thuật toán với ạ . tks mọi người

  • #2
    Câu 1 bạn có thể search google: sort two dimensional array c++

    Comment


    • #3
      mình còn giữ code bài 2 mà không biết có nên đưa thẳng z không

      Comment


      • #4
        Originally posted by 14520769 View Post
        mình còn giữ code bài 2 mà không biết có nên đưa thẳng z không
        thím up cho e xem với ^_^ đa tạ thím nhiều lắm :salute::salute::salute:

        Comment


        • #5
          thím hả -_-

          Comment


          • #6
            suy nghĩ đi, mình cũng làm lâu kha khá

            Comment


            • #7
              Đối với sắp xếp tăng dần theo chiều xoắn ốc, hay là tạo mảng theo chiều xoắn ốc thì bạn cũng làm như này.
              Bạn cứ nhét những phần tử tăng dần từ vòng ngoài, sau đó thu hẹp không gian xoắn ốc lại.

              [I]#include <stdio.h>
              #include <iostream>
              using namespace std;
              int main(){
              int N, M, K=0;
              cin>>N>>M;
              int **a; // khai báo con trỏ cấp 2
              //--------- cấp phát bộ nhớ cho mảng 2 chiều
              a=new int*[N+1];
              for (int i=1; i<=N; i++){
              a[i]=new int[M+1];
              }
              //----------- xử lí xoắn ốc
              int d1=1, c1=N, d2=1, c2=M;
              while (d1<=c1){
              for (int i=d2; i<=c2; i++){
              K++; a[d1][i]=K;
              }
              if (K==N*M) break;
              for (int i=d1+1; i<=c1; i++){
              K++; a[i][c2]=K;
              }
              if (K==N*M) break;
              for (int i=c2-1; i>=d2; i--){
              K++; a[c1][i]=K;
              }
              if (K==N*M) break;
              for (int i=c1-1; i>d1; i--){
              K++; a[i][d1]=K;
              }
              if (K==N*M) break;
              d1++; c1--; d2++; c2--;
              }
              //--------------------------------
              for (int i=1; i<=N; i++){
              for (int j=1; j<=M; j++)
              printf("%4d", a[i][j]);
              printf("\n");
              }
              //------------- Giải phóng bộ nhớ
              for (int i=1; i<=N; i++)
              delete []a;
              return 0;
              }

              Comment

              LHQC

              Collapse
              Working...
              X