hdu 1708

地址: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 ;
}



posted @ 2012-01-07 21:50  Seraph2012  阅读(174)  评论(0编辑  收藏  举报