Hỏi đoạn code về mảng ký tự C++

Ai đó có thể giải thích giúp mình về kiểu mảng này không ạ?

    int freq[256] = {0};
	len = str.length();
  	
  	for(i = 0; i < len; i++)
  	{
  		freq[str[i]]++;
	}
  		
  	for(i = 0; i < len; i++)
  	{
		if(max < freq[str[i]])
		{
			max = freq[str[i]];
			result = str[i];
		}
	}

Mình mới học nên nhìn lạ, nhưng không tìm ra nó là kiểu mảng như nào.

Cái này gọi là bảng tần suất :slight_smile:
Khai báo mảng ntn cho tất cả các ô bằng 0.

4 Likes
int freq[256] = {0}; // Khai báo mảng freq có 256 phần tử. 
                     // Lí do có số 256 thì là do bảng ASCII có 256 kí tự. 
                     // Tất cả 256 phần tử đều được initialize = 0

for(i = 0; i < len; i++)
{
    freq[str[i]]++; // tăng 1 đơn vị tại vị trí tương ứng của kí tự str[i]
                    // ví dụ: str[i] = 'A' <=> freq[65]++
}

Vòng lặp bên dưới là tìm kí tự nào xuất hiện nhiều nhất.

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?