于是就写了一段代码。它生成一个在 [-100,100] 之间的 100 个随机数的排序数组。然后它通过将它们放入 result[] 中找到所有加到 10 的数字对。
但是它没有按预期工作。随机数和排序似乎很好。它只是发现对部分。谁能告诉我我哪里做错了?任何帮助表示赞赏。
谢谢
#include <iostream>
#include <cstdlib>
#include <algorithm>
using namespace std;
int main()
{
int array[100];
int result[100];
int totalPair;
srand((unsigned)time(0));
for(int i=0; i<100; i++){
array[i] = (rand()%200)+1;
array[i]=array[i]-100;
}
std::sort(array,array+100);
int i=0;
int j=99;
int totalPairs=0;
while (i<j && i!=j)
{
if (array[i]+array[j] == 10)
{
result[totalPairs*2] = array[i];
result[totalPairs*2+1] = array[j];
totalPairs++;
++i;
--j;
}
else
{
if (array[i]+array[j] > 10) //make sum smaller reduce J
{
--j;
}
if (array[i]+array[j] < 10) //make sum larger increase I
{
++i;
}
if (array[i]+array[j] == 0)
{
++i;
}
}
}
for(int a=0; a<100; ++a){
cout<<array[a]<<endl;
}
for(int a=0; a<100; ++a){
cout<<result[a]<<endl;
}
system("PAUSE");
return EXIT_SUCCESS;
}