地址:http://acm.hdu.edu.cn/showproblem.php?pid=1708
题意:给两个字符串s0和s1,sn是sn-1和sn-2拼接而成的。问sn中每个字母出现的次数。
mark:直接递推就可以了。注意0的情况。
代码:
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
int t1[30], t2[30], t3[30] ;
void output (int t[])
{
int i ;
for (i = 0 ; i < 26 ; i++)
printf ("%c:%d\n", 'a'+i, t[i]) ;
puts ("") ;
}
int main ()
{
int T, n, i, j ;
char s1[50], s2[50] ;
scanf ("%d%*c", &T) ;
while (T--)
{
scanf ("%s %s %d%*c", s1, s2, &n) ;
memset (t1, 0, sizeof(t1)) ;
memset (t2, 0, sizeof(t2)) ;
memset (t3, 0, sizeof(t3)) ;
for (i = 0 ; s1[i] ; i++)
t1[s1[i]-'a']++ ;
for (i = 0 ; s2[i] ; i++)
t2[s2[i]-'a']++ ;
if (n == 0)
output (t1) ;
else if (n == 1)
output(t2) ;
else
{
for (i = 0 ; i < n-1 ; i++)
{
for (j = 0 ; j < 26 ; j++)
{
t3[j] = t1[j]+t2[j] ;
t1[j] = t2[j], t2[j] = t3[j] ;
}
}
output (t3) ;
}
}
return 0 ;
}