-
05-02-2015, 08:48 AM #1Junior Member
- 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;}
View more random threads:
- Giải thích ý nghĩa đoạn code tìm USCLN trong C
- bài tập về mảng một chiều
- Factory
- giải thích dùm mình bài gán tất cả phần tử mảng a vào mảng b
- Lập danh sách bằng code trong c++
- Hoàn thiện bài tập, tối giản bằng đa năng hóa toán tử !
- Ai giúp mình in tam giác với
- Lỗi khi chạy chương trình, help me!
- Bài tập chuyên tin lớp 10: lập trình C++ về xâu ký tự?
- xin chỉ giáo về sự khác nhau giữa con trỏ và mảng
-
05-02-2015, 09:43 AM #2Junior Member
- 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à :|
-
05-02-2015, 11:50 AM #3Junior Member
- 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]
-
05-02-2015, 01:26 PM #4Junior Member
- 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;}
-
05-02-2015, 02:19 PM #5Junior Member
- 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
-
05-02-2015, 03:59 PM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
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
Pallet nhựa Lâm Đồng giải pháp hoàn hảo cho nhà kho Pallet nhựa Lâm Đồng là một giải pháp đa năng và hiệu quả trong việc vận chuyển và lưu trữ hàng hóa. Trong đó, pallet nhựa Lâm Đồng không chỉ đáp...
Pallet nhựa Lâm Đồng giải pháp...