感觉是因为你的代码没有考虑字符串的长度可能不等吧,要优先考虑长的字符串:
int stringLen=0; //对于每个字符串,排第一的字母权值+12,第二+11。。。 
for (int i=0;i<n;i++){
                String s=array[i];
                stringLen=s.length();
                for (int j=0,t=12;j<stringLen;j++,t--){
                    carray[s.charAt(j)-'A'].value+=t;
                }
                stringLen=0;
            }    
应该从每个字符串的尾部开始加权值把(从1到12)。
感觉是这样,并没有验证。。。