回 帖 发 新 帖 刷新版面

主题:[讨论]麻烦各位帮个忙!!

请教各位大侠,怎样用C语言实现一个递归的分治算法:从一组数中计算某个字符出现的频率?非常感谢大家的帮助!

回复列表 (共3个回复)

沙发

二分法,是要这样的么?

#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

板凳

非常感谢这位朋友的帮助!小女子不胜感激!再麻烦一下,如果是从一组整数中求某个整数出现的频率,单单把变量的类型改一下够吗?

3 楼

我已经把他改好了,真是谢谢了。我觉得上这边来请教是做对了,集体的智慧的力量还是很大的。

我来回复

您尚未登录,请登录后再回复。点此登录或注册