#8440: 高手拜託幫看 ~"~ WA (line:13) 輸出短少 您共輸出 12 行。


yl9111524 (運球過仁)


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int Fect(int b)
{
    if(b==0)    
    return 1;
    else    
    return b*Fect(b-1);

int palindrome(char a[],int num)
{
    int count[26]={0};
    int odd_count=0,even_count=0,out,a1=0,b=1;
    
    for(int i=0 ; i<num;i++)
    {
        switch(a[i])
        {
        case 'a':
        count[0]++;
        break;
        case 'b':
        count[1]++;
        break;
        case 'c':
        count[2]++;
        break;
        case 'd':
        count[3]++;
        break;
        case 'e':
        count[4]++;
        break;
        case 'f':
        count[5]++;
        break;
        case 'g':
        count[6]++;
        break;
        case 'h':
        count[7]++;
        break;
        case 'i':
        count[8]++;
        break;
        case 'j':
        count[9]++;
        break;
        case 'k':
        count[10]++;
        break;
        case 'l':
        count[11]++;
        break;
        case 'm':
        count[12]++;
        break;
        case 'n':
        count[13]++;
        break;
        case 'o':
        count[14]++;
        break;
        case 'p':
        count[15]++;
        break;
        case 'q':
        count[16]++;
        break;
        case 'r':
        count[17]++;
        break;
        case 's':
        count[18]++;
        break;
        case 't':
        count[19]++;
        break;
        case 'u':
        count[20]++;
        break;
        case 'v':
        count[21]++;
        break;
        case 'w':
        count[22]++;
        break;
        case 'x':
        count[23]++;
        break;
        case 'y':
        count[24]++;
        break;
        case 'z':
        count[25]++;
        break;
        }
    }
    
    for(int j=0;j<26;j++)
    {
        if(count[j]%2==1)
        odd_count++;
        else if(count[j]>0&&count[j]%2==0)
        even_count++;
    }
    
    
    for(int j=0;j<26;j++)
    {
        if(count[j]%2==1&&count[j]>=3)
        {
            a1+=count[j]-1;
            b*=Fect((count[j]-1)/2);
        }
        else if(count[j]>0&&count[j]%2==0)
        {
            a1+=count[j];
            b*=Fect((count[j])/2);
        }
    }
    
    a1=a1/2;
    a1=Fect(a1);
    
    if(odd_count>1)
    out=0;
    else
    out = a1/b;

    return out;
}


int main(void)
{
    int n;
    scanf("%d",&n);
    int out[n],num;
    for(int i=0;i<n;i++)
    {
        char a[40];
        scanf("%s",&a);
        num =  strlen(a);
        printf("%d\n",palindrome(a,num));
    }
    return 0;    
    
}
 
 
到底為什麼會輸出短少......QQ