10336 - Rank the Languages

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char str[1000][1000],ch;
int arr[130];
int koyta_line,koyta_letter,counter;
struct a
{
    int counter;
    int index;

}arr1[1000];
bool cmp(a lhs,a rhs)
{
    if(lhs.counter>rhs.counter)
    {
        return true;
    }
    return false;
}

void dfs(int i,int j)
{
    if(str[i][j]=='*'||i>=koyta_line||j>=koyta_letter||i<0||j<0)
    {
        return;
    }
    else if(str[i][j]==ch)
    {
        str[i][j]='*';
        dfs(i+1,j);
        dfs(i,j+1);
        dfs(i-1,j);
        dfs(i,j-1);
    }
}
int main()
{
    int a,i,j,k,t,p;
    scanf("%d",&t);
    for(p=1; p<=t; p++)
    {
        scanf("%d %d",&koyta_line,&koyta_letter);
        getchar();
        for(i=0; i<koyta_line; i++)
        {
            for(j=0; j<koyta_letter; j++)
            {
                scanf("%c",&str[i][j]);
            }
            getchar();
        }
        for(i=0; i<koyta_line; i++)
        {
            counter=0;
            for(j=0; j<koyta_letter; j++)
            {
                if(str[i][j]>='a'&&str[i][j]<='z')
                {
                    a=str[i][j];
                    ch=str[i][j];
                    dfs(i,j);
                    arr[a]++;
                }
            }
        }
        j=0;
        for(i=97; i<130; i++)
        {
            if(arr[i]!=0)
            {
                arr1[j].counter=arr[i];
                arr1[j].index=i;
                j++;
            }
        }
        sort(arr1,arr1+j,cmp);
        printf("World #%d\n",p);
        for(i=0;i<j;i++)
        {
            printf("%c: %d\n",arr1[i].index,arr1[i].counter);
        }
        memset(arr,0,sizeof(arr));
        memset(arr1,0,sizeof(arr1));
        memset(str,'\0',sizeof(str));
    }
    return 0;
}

0 comments: (+add yours?)