Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 6 của 6
  1. #1
    Ngày tham gia
    Dec 2015
    Bài viết
    0
    Mình không nghĩ cách làm dưới của mình là tốt nhất, nhưng post lên cho bạn tham khảo.
    Ai góp ý để nó tăng performance thì sửa giúp mình nhé.

    Mã:
    #include <iostream>#include <map>#include <vector>#include <algorithm> using namespace std; /* Functor to calculate number of times a element appear in array  *  */class CalRepetition{public:    CalRepetition( map<int,int>& c) : calMap_( c )    {     }     void operator() ( const int a )    {        if( calMap_.find( a ) != calMap_.end() ) {             calMap_[ a ] += 1;         } else {             calMap_.insert( pair<int,int> ( a, 1 ) );         }    } private:     map<int,int>& calMap_;}; void printResult( const map<int,int>& a ){     map<int,int>::const_iterator it( a.begin() );     for( ; it != a.end(); ++it ) {         cout << "Element : " << it->first << " exist: " << it->second << " times 
    ";    } }int main(){     vector<int> src;    map<int,int> results;     src.push_back( 1 );    src.push_back( 1 );    src.push_back( 2 );    src.push_back( 2 );    src.push_back( 1 );    src.push_back( 4 );    src.push_back( 6 );    src.push_back( 7 );    src.push_back( 5 );    src.push_back( 3 );    src.push_back( 3 );    src.push_back( 4 );    src.push_back( 1 );    src.push_back( 5 );    src.push_back( 5 );    src.push_back( 1 );    src.push_back( 1 );    src.push_back( 1 );    src.push_back( 1 );     for_each( src.begin(), src.end(), CalRepetition( results ) );     printResult( results );     return 0;}

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    nếu chỉ đếm các số từ 0 - 9 thì dùng 1 mảng 10 phần tử nữa là xong mà :|

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    push_back push_back everywhere
    ^ Chuẩn men [IMG]images/smilies/biggrin.png[/IMG]

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Đây là điều greigaz đề cập đến:

    Mã:
    int temp = n;for(int i = 0; i < 10; i++) ts[i] = 0;while(temp){    ts[temp%10]++;    temp/=10;}

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    tìm số làn suất hiện của các số trong dãy

    Mình đang giải quyết bài toán này . Vd như cho một dãy sắp xếp như sau. 22...22255...5444..4777...77...các số được sắp xếp như trên. bài toán đặt ra là có những số nào xuất hiện trong dãy và xuất hiện bao nhiêu lần.ví dụ như 222335555. thì số 2 xuất hiện 3 lần,số 3 xuất hiện 2 lần và số 5 xuất hiện 4 lần. bác nào giúp e với.e mới học nên còn gà lắm

  6. #6
    Tôi đưa ra ý tưởng cho giải thuật bạn tự viết codes nhé :

    - Chúng ta có một dãy số tăng tương đương với chúng ta có 1 mảng A[] các số đã sắp xếp.
    - Đầu tiên ta cần 1 mảng tạm để lưu lại các giá trị phân biệt B[]
    - Gán t = A[0], j=0 , Duyệt mảng A, nếu A[i] != t ,thì gán B[j] = t,t=A[i] ,j++
    - Sau khi duyệt xong mảng A, ta có được các giá trị phân biệt của A[] nằm trong B[].
    - Việc còn lại là đếm xem phần tử của B[] xuất hiện bao nhiêu lần trong A[].

    Chúc bạn làm bài tốt

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •