主题:[讨论]麻烦各位帮个忙!!
todaydesongli
[专家分:0] 发布于 2006-04-05 11:24:00
请教各位大侠,怎样用C语言实现一个递归的分治算法:从一组数中计算某个字符出现的频率?非常感谢大家的帮助!
回复列表 (共3个回复)
沙发
euc [专家分:4310] 发布于 2006-04-05 12:57:00
二分法,是要这样的么?
#include <stdio.h>
#include <stdlib.h>
int frequency (char c, char str[], int head, int tail)
//查找字符c在str中(一组数?)出现的频率
{
int mid;
if (head >= tail)
return str[head] == c;
mid = (head + tail)/2;
return frequency (c, str, head, mid) +
frequency (c, str, mid + 1, tail);
}
int main(int argc, char *argv[])
{
char str[] = {1,2,3,1,5,6,3,6,7,9,3,5};
printf ("%d\n", frequency (1, str, 0, 11));
system("PAUSE");
return 0;
}
// result : 2
板凳
todaydesongli [专家分:0] 发布于 2006-04-07 14:54:00
非常感谢这位朋友的帮助!小女子不胜感激!再麻烦一下,如果是从一组整数中求某个整数出现的频率,单单把变量的类型改一下够吗?
3 楼
todaydesongli [专家分:0] 发布于 2006-04-08 11:53:00
我已经把他改好了,真是谢谢了。我觉得上这边来请教是做对了,集体的智慧的力量还是很大的。
我来回复