题目描述:
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
例如:
给定 A = [2, 11, 7, 15], target = 9 因为 A[0] + A[1] = 2 + 7 = 9 所以返回 [0, 2]
题目解析:
#include <iostream>
using namespace std;
int main()
{
int a,target;
cout<<"please Input a:"<<endl;
cin>>a;
cout<<"please Input target:"<<endl;
cin>>target;
这里数组的空间我们事先bing并不知道是多少,所以应该运用动态数组:
int *A=new int [a];
然后考虑到数组的元素不能重复,所以编译如下代码;
for(int i=0;i<a;i++)
{
cin>>A[i];
for(int j=0;j<i;j++)
{
if(A[i]==A[j])
{
cout<<"please Input again"<<endl;
cin>>A[i];
break;
}
}
}
接下来进行寻找合适的两数之和与目标数字相相匹配
for(int m=0;m<a;m++)
{
for(int n=m+1;n<a;n++)
{
if(A[m]+A[n]==target)
{
cout<<"["<<m<<","<<n<<"]"<<endl;
break;
}
}
}
最后,在程序结束之前不要忘记进行释放内存空间:
delete [] A;
return 0;
}