杨式三角找对应的数据
#include <stdio.h>
int FindNum(int arr[3][3], int k, int row, int col)
{
int x = 0;
int y = col - 1;
while (x <= col - 1 &&y >= 0)
{
if (arr[x][y]>k) //col列里面如果想找到的数小于这个坐标的数,就需要将列向前移动
{
y--;
}
else if (arr[x][y]<k)
{
x++;
}
else {//这里之前没有加上else ,无论什么情况下都能是找到,找到的情况下,需要返回1
return 1;
}
}
return 0;
}
int main(void)
{
//1 2 3
//4 5 6
//7 8 9
int arr[3][3] = { { 1,2,3 }, { 4,5,6 }, { 7,8,9 } };
int k = 17;
int ret =FindNum(arr, k, 3, 3);
if (ret == 1)
{
printf("找到了\n");
}
else
printf("没有找到\n");
return 0;
}
传入指针以此来记录下标
#include <stdio.h>
int FindNum(int arr[3][3], int k, int* px, int* py)
{
int x = 0;
int y = *py - 1;
while (x <= *px - 1 && y >= 0)
{
if (arr[x][y] > k)
{
y--;
}
else if (arr[x][y] < k)
{
x++;
}
else {
*px = x;
*py = y;
return 1;
}
}
return 0;
}
int main(void)
{
//1 2 3
//4 5 6
//7 8 9
int arr[3][3] = { { 1,2,3 }, { 4,5,6 }, { 7,8,9 } };
int x = 3, y = 3; //传坐标进去
int k = 7;
int ret =FindNum(arr, k, &x, &y);
if (ret == 1)
{
printf("找到了\n");
printf("下标是%d,%d\n", x, y);
}
else
printf("没有找到\n");
return 0;
}
浙公网安备 33010602011771号