您的位置:首页 > 其它

找出升序数组中和为给定值的两个数字

2014-12-29 11:09 274 查看
#include<stdio.h>
#include "OJ.h"

/*
功能: 输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。如果有多对数字的和等于输入的数字,输出任意一对即可。

输入: int aData[]           // 升序数组
unsigned int uiLength // 数组元素个数
int sum,              // 给定两个数组的和

输出: int *pNum1            // 第一个数字,对应数组索引小的
int *pNum2            // 第二个数字,对应数组索引大的

返回: 找到返回true,异常返回false
*/
bool FindTwoNumbersWithSum(int aData[], unsigned int uiLength, int sum, int *pNum1, int *pNum2)
{
/*在这里实现功能*/
if (NULL == aData || 2 > uiLength)
{
return false;
}
int uiBegin = 0;
int uiEnd =int( uiLength - 1);
while(uiBegin < uiEnd)
{
if (sum == aData[uiBegin] + aData[uiEnd])
{
*pNum1 = aData[uiBegin] ;
*pNum2 = aData[uiEnd] ;
return true;
}
if (sum < aData[uiBegin] + aData[uiEnd])
{
uiEnd--;
}
if (sum > aData[uiBegin] + aData[uiEnd])
{
uiBegin++;
}
}

return false;
}

int main()
{

int  aData[] = {1};
int  iNum1 =0, iNum2 =0;
bool bReturn;

bReturn = FindTwoNumbersWithSum(aData, 1,15, &iNum1, &iNum2);
//cout<<bReturn<<"	"<<iNum1<<"	"<<iNum2<<endl;
return 1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐