当前位置: 代码迷 >> C语言 >> 求助:求极大值问题
  详细解决方案

求助:求极大值问题

热度:122   发布时间:2007-12-26 18:21:25.0
原帖由 [bold][underline]dumpling131[/underline][/bold] 于 2007-12-25 18:41 发表 [url=http://bbs.bc-cn.net/redirect.php?goto=findpost&pid=1160150&ptid=194191][/url]
我是想求极大值 不是最大值。如果你有好的代码,能不能给我?十分感谢。



区别是??????????????
----------------解决方案--------------------------------------------------------
学历太低,实在不知道最大值和极大值的区别.
----------------解决方案--------------------------------------------------------
极大值是指,在一个小邻域里的最大值, 这么一组数据1,2,5,4,3,6,1,5,8,3,1,11,2,3,5,22,33,1,2,3,2,1,6,5,9,1,5,2,极大值有很多个,5,6,8,11,33,9而最大值只有一个33。因为我不知道这些极大值在什么区域里,所以不能用求最大值的方法求极大值。
----------------解决方案--------------------------------------------------------
常识性错误
你的 b[ ]={0}
c[ ]={0}
确定的数组长度只有1个元素. 所以运行会出现越界,而C是不检查是否越界的.
所以出现莫名的错误. 算法基本没问题, 取的邻域总共是5个数, 就是相邻5个数的最大值,另检查下数据总共是不是30个,少了也会出现小问题
----------------解决方案--------------------------------------------------------
把k++的位置换一下啊.因为k的位置不一样得到极值范围不一样啊
#include <stdio.h>
int find_max(int *a,int *b)
{
    int i,n=0;
    int M;
    int k;
    int c[30]={0};
    M=30;//sizeof(a);
for (i=2;i<M-2;i++)
{
   k=1;
   printf("%d,",a[i]);
   while (a[i-k]<a[i] && a[i+k]<a[i])
   {   k++;
       if(k==3)
       {
       b[n]=a[i];
       c[n]=i;
       n++;
       }
      }
}
for(i=0;i<n;i++)
{
    printf("第%d是附近六项当中的最大值;\n",c[i]);
    printf("a[%d]得值是:%d\n",c[i],b[i]);
}
return (n);
   
}

void main()
{
    int n;  
    int a[30]={1,2,5,4,3,6,1,5,8,3,1,11,2,3,5,22,33,1,2,3,2,1,6,5,9,1,5,2};
    int b[30]={0};
    n=find_max(a,b);
   }
----------------解决方案--------------------------------------------------------
终于解决了,谢谢16楼的。不过还有一个问题,就是不知道数组b中会有多少个数据,但是又不想 占用太多的内存空间,有什么办法么?
----------------解决方案--------------------------------------------------------
c好象不支持数组动态定义啊,vb好象可以动态定义啊.要是不嫌麻烦可以动态开辟内存空间*malloc( size_t size );
----------------解决方案--------------------------------------------------------
如楼上, 只能用动态内存分配函数.
少量数据的情况下,其实用固定数组问题不大,当数据量巨大的情况下,用链表吧, 这样空间浪费少.
.
----------------解决方案--------------------------------------------------------
谢谢各位了
----------------解决方案--------------------------------------------------------
  相关解决方案