算法出现传不进去参数的问题(警告)

义博云天 2012-12-11 04:53:08
#include "stdafx.h"
#include"stdio.h"
#include"conio.h"
int zhao(int coin[],int low,int high)//定义判断质量轻重函数
{
int i,sum1 =0 ,sum2 = 0,sum3 = 0;
if(low+1 == high )//数量为2时
{
if(coin[low]<coin[high])
return low+1;
else
return high+1;
}
/*数量为偶数时*/
if((high - low +1) % 2 == 0)
{
for(i = low; i<=low+(high-low) / 2; i ++)//循环求取前半段的和
sum1 = sum1 + coin[1];
for(i=low +(high - low) / 2 + 1;i<=high;i++)//循环求取后半段的和
sum2 = sum2 +coin[i];
/*比较两端和的大小并返回小的*/
if(sum1 < sum2)
return (zhao(coin,low,low+( high - low ) / 2 ));//递归调用

if(sum1 > sum2)
return (zhao(coin,low+( high - low ) / 2, high ));//递归调用
}
/*数量为奇数时*/
if((high - low +1) % 2 != 0)
{
for(i = low; i<=low+(high-low) / 2; i++)//循环求取前半段的和
sum1 = sum1 + coin[1];
for( i = low + (high - low) / 2 + 1;i<=high;i++)//循环求取后半段的和
sum2 = sum2 +coin[i];
sum3=coin[low+(high-low)/ 2];

if(sum1 < sum2)
return (zhao(coin,low,low+( high - low ) / 2 ));

if(sum1 > sum2)
return (zhao(coin,low+( high - low ) / 2, high ));
if(sum1+sum3==sum2+sum3)
return (low+(high-low)/2+1);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int coin[30] ={1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
printf("结果是%d",zhao(coin,0,29));
getchar();
return 0;
}
...全文
202 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
WizardOz 2012-12-19
  • 打赏
  • 举报
回复
少年,算法和程序是两回事……
Joseph-Growth 2012-12-17
  • 打赏
  • 举报
回复
你这个实际是2分查找算法吧。楼上说的问题,可能就是你的问题答案了。
sepcity 2012-12-12
  • 打赏
  • 举报
回复
没看懂你代码什么意思 大概看了下。。。明显的问题有一个 求前半段的和
sum1 = sum1 + coin[1];
应改为
sum1 = sum1 + coin[i];
下次调下格式。。。这样看代码。。太烦。~~

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧