//有一个int型数组,每两个相邻的数之间的差值不是1就是
//- 1.如今给定一个数。要求查找这个数在数组中的位置。
#include <iostream>
using namespace std;
void Grial(int a[], int n, int val)
{
//我的思路是从第一个数開始,假设这个数是2,
//而我要找的数是5。那么最好我也必须向后面
//跳5-2=3个位置,由于每一个数字仅仅相差1或者-1.
int i = 0;
int *b = new int[n];//假设所有是val,则须要n空间。
int k = 0;
for (; i < n;)
{
if (a[i] == val)
{
b[k++] = i;
i++;
}
else
{
int len = a[i]>val ?
a[i] - val : val - a[i];
i += len;
}
}
cout << val << "出现的下标位置有:";
for (i=0; i < k; i++)
{
cout << b[i] << " ";
}
cout << endl;
}
int main()
{
int a[] = {2,3,4,5,6,7,6,5,4,3,2,1,2,3,4,5};
Grial(a, sizeof(a) / sizeof(int),5);
return 0;
}