杨式三角找对应的数据

#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;
}

posted @ 2022-04-18 16:00  藏进夜里躲在光下  阅读(39)  评论(0)    收藏  举报