Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 22 kết quả

Đề tài: Bài tập xoay và sắp xếp ma trận. Cần được giúp đỡ

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

    Unhappy Bài tập xoay và sắp xếp ma trận. Cần được giúp đỡ

    Mấy anh giúp em bài này với:
    Cho ma trận A[M][N]. Xây dựng hàm:
    a. Xoay ma trận 90 độ theo chiều kim đồng hồ.
    b. Kiểm tra từng dòng của ma trận có được sắp tăng dần chưa? nếu có dòng nào chưa được sắp tăng thì xếp tăng dòng đó.
    VD:
    Ma trận có sẵn:
    6 2 3
    4 9 6
    7 0 9
    Ma trận sau khi xoay:
    7 4 6
    0 9 2
    9 6 3
    Ma trận sau khi sắp tăng dần:
    4 6 7
    0 2 9
    3 6 9

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

    bài này cũng ko khó lắm đâu . mình chỉ gợi ý sơ sơ bạn tự làm nhé . xoay ma trận thì trước tiên biến a[i][j] thành a[j][i] . sau đó đảo các cột cho nhau . sắp tăng thì bạn cứ áp dụng 1 thuật toán sắp xếp nào đó cho từng dòng là ok .

  3. #3
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Câu A :
    PHP Code:
    #include <iostream>
    #include <vector>
    #include <cstdlib>
    #include <algorithm>

    using namespace std;

    template<typename T>
    void Print(std::vectorstd::vector> >& my_vect)
    {
        for(
    int x 0my_vect.size(); x++)
        {
            for(
    int y 0my_vect.size(); y++){
                
    std::cout << my_vect[x][y];
            }
            
    std::cout << std::endl;
        }
    }

    template<typename T>
    void Rotate(std::vectorstd::vector> >& my_vect)
    {
        for(
    int x 0my_vect.size(); x++)
        {
            for(
    int y 0xy++){
                
    swap(my_vect[x][y], my_vect[y][x]);
            }
        }
    }

    template<typename T>
    void Generate(std::vectorstd::vector> >& my_vect)
    {
        for(
    int x 0my_vect.size(); x++)
        {
            for(
    int y 0my_vect.size(); y++){
                
    my_vect[x][y] = rand()%10;
          }
        }
    }

    int main()
    {
        
    std::vectorstd::vector<int> > matrix(3std::vector<int>(3,0)); 
        
    srand(NULL);
        
    Generate(matrix);
        
    std::cout << "Before : " << std::endl;
        Print(
    matrix);
        
    Rotate(matrix);
        
    std::cout << "After : " << std::endl;
        Print(
    matrix);
        
        return 
    0;

    Thích làm dùm thì mình làm dùm cho nè. Ráng đọc cho hiểu nha T_T !
    Đã được chỉnh sửa lần cuối bởi rox_rook : 16-01-2008 lúc 02:30 PM. Lý do: Bug hic hic !

  4. #4
    Ngày gia nhập
    09 2006
    Bài viết
    711

    rox_rook lầm lẫn giữa capacity và size của class vector rồi, hai method này có ý nghĩa # nhau đấy, nên code của em sẽ chạy sai. Đọc kỹ lại help đi em. size luôn nhỏ hơn capacity, khi = thì capacity sẽ được tăng tiếp.

  5. #5
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Hic, đúng là em nhầm giữa 2 thằng này, sách nó bảo là capacity : trả về số phần tử lớn nhất mà vector có thể chứa mà không cần thêm cấp phát thêm, trong khi em cout ra thử thì thấy nó không khác gì size() anh à :( ! Anh giải thích cho em chỗ này 1 tí được không ạ ? Cái STL chua quá T_T!
    rox_rook lầm lẫn giữa capacity và size của class vector rồi, hai method này có ý nghĩa # nhau đấy, nên code của em sẽ chạy sai. Đọc kỹ lại help đi em. size luôn nhỏ hơn capacity, khi = thì capacity sẽ được tăng tiếp.
    Phải đọc cả class vector luôn hì hì, em hiểu ý anh rùi ^^ Thanks anh !
    Đã được chỉnh sửa lần cuối bởi rox_rook : 16-01-2008 lúc 02:46 PM.

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

    Unhappy Bài tập xoay và sắp xếp ma trận. Cần được giúp đỡ

    Hix Hix mấy anh làm kái gì mà em ko hiểu gì hết. Mấy anh làm ơn giải cách nào dễ hiểu hơn được ko. Em mới học năm nhất àh nên ko biết nhiều. Mà mấy anh giải bằng C hay là kái gì dzậy. Em mới học lập trình C thôi chưa học những kái khác đâu. Mấy anh ráng giúp em nha

  7. #7
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Trích dẫn Nguyên bản được gửi bởi atula1989
    Hix Hix mấy anh làm kái gì mà em ko hiểu gì hết. Mấy anh làm ơn giải cách nào dễ hiểu hơn được ko. Em mới học năm nhất àh nên ko biết nhiều. Mà mấy anh giải bằng C hay là kái gì dzậy. Em mới học lập trình C thôi chưa học những kái khác đâu. Mấy anh ráng giúp em nha
    Hix hix cái gì mà hix hix?
    Dr rất khuyến khích cách bạn: "Nếu không biết thì hỏi, để được giúp đỡ". Nhưng mà các bạn cũng phải học cách hỏi thế nào để đạt được mục đích nhanh nhất. Cũng rất đơn giản là các bạn chỉ nên hỏi những chỗ khúc mắc, và càng chi tiết thì càng tốt.

    Một điều nữa là: Bạn đã tham gia và đã là một thành viên, thì cố gắng đọc Nội quy của diễn đàn. Nội quy là một bản để hướng dẫn cho mọi thành viên tham gia có quy củ hơn, nhưng nó cũng chính là cái kinh nghiệm để mọi người tham gia thảo luận tốt hơn.

    Dr đã sửa lại tiêu đề bài viết cho bạn. Không biết là có đúng yêu cầu không? Vì chỉ có bạn mới hiểu rõ bạn định hỏi gì?

    Dr không làm cho bạn mà sẽ hướng dẫn bạn. Bạn viết lấy code, nếu sai thì đưa lên đây.

    Xoay ma trận: Thực ra là rất dễ, bạn chỉ cần thực hiện gán A[i][j] thành a[j][i]. Với i là biến chạy từ 0 tới M-1. j là biến chạy từ 0 tới N-1. Để dễ hình dung bạn vẽ lên giấy một ô kẻ vuông gồm M cột và N dòng. Sau đó nghĩ xem có dễ không nào?

    Sắp xếp tăng dần như của bạn là sắp xếp tăng dần theo hàng. Mà bạn có thấy là mỗi hàng là một mảng một chiều không? Việc sắp xếp mảng một chiều bạn làm được chứ?

    Thế nhé. Cố lên một chút là làm được. Nó đơn giản hơn những gì bạn nghĩ đó.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  8. #8
    Ngày gia nhập
    11 2007
    Bài viết
    153

    Các bác cho em hỏi có được phép dùng thêm 1 mảng phụ nữa ko thế nhỉ:-? hay chỉ thao tác trên 1 mảng duy nhất thôi để còn biết đường mà tính chứ, bác nào demo cái gán A[i][j]=A[j][i] cho em coi cái nếu gán thế thì với vòng for mà bác DR bảo thì i=0;j=0 thì giá trị lúc gán sẽ là a[0][0]=a[0][0] à:-?
    Chỗ này là chỗ em chưa hiểu mong các bác giải thích giúp.

  9. #9
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    PHP Code:
    template<typename T>
    void Rotate(std::vectorstd::vector> >& my_vect)
    {
        for(
    int x 0my_vect.size(); x++)
        {
            for(
    int y 0xy++){
                
    swap(my_vect[x][y], my_vect[y][x]);
            }
        }

    Bài này thực ra dễ lắm, tại hôm bữa ghét mấy ông lười nên phang vector vào cho khó đọc thôi T_T. Comeonbaby để ý biến y chạy từ đầu tới đâu là hiểu liền .

  10. #10
    Ngày gia nhập
    11 2007
    Bài viết
    153

    Rox_rook giải bài này khó hiểu quá Comeonbaby chưa học đến cái vecto nên không hiểu bài giải của R , cái đoạn ví dụ của R C ko hiểu ở chỗ my_vect.size() là sao? ,còn đoạn x với y thì biến y chạy với với độ tăng của biến x đúng ko? Đoạn này thì C hiểu còn mỗi cái đoạn đã nói trên kia là ko hiểu gì:-?
    R có thể ví dụ lại đơn giản cho C không C dốt quá ^^!! không hiểu cái này.

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

  1. Bài tập C Cách xoay Ma trận đi 90 độ trong lập trình C?
    Gửi bởi coldboy_spring trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 16
    Bài viết cuối: 22-04-2013, 07:08 PM
  2. Xoay ma trận một góc 90 độ ngược chiều kim đồng hồ vối ma trận thường
    Gửi bởi prince7seas 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: 11-07-2012, 10:03 PM
  3. xoay ma trận 90 độ C++
    Gửi bởi honeydl33 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 02-04-2010, 08:26 PM
  4. Lập trình C Xoay và lật các phần tử trong ma trận vuông
    Gửi bởi shrek1412 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 18-03-2010, 03:00 PM
  5. xoay ma trận
    Gửi bởi kid_bk trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 12-11-2007, 01:28 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