//有一个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;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-05 23:25:10