C语言实现杨氏矩阵找出目标数
杨氏矩阵 :一个由上到下,由左到右依次递增的矩阵。
目的: 判断一个数是否在矩阵中。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//int find_num1(int arr[3][3],int r,int c,int k)
//{
// int x = 0;
// int y = c - 1;
//
// while (x <= r && y>=0)
// {
// if (arr[x][y] < k)
// {
// x++;
// }
// else if (arr[x][y] > k)
// {
// y--;
// }
// else
// {
// //printf("%d %d\n",x,y); // 函数目标要清晰,不掺杂别的东西
// return 1;
// }
// }
// return 0;
//}
int find_num2(int arr[3][3], int * px, int * py,int k)
{
int x = 0;
int y = *py - 1;
while (x <= *py && y >= 0)
{
if (arr[x][y] < k)
{
x++;
}
else if (arr[x][y] > k)
{
y--;
}
else
{
*px = x;
*py = y;
return 1;
}
}
return 0;
}
int main()
{
// 假如是下面这种矩阵的排列:
//1 2 3
//4 5 7
//7 8 9
int arr[3][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int k = 4;
int x = 3;
int y = 3;
//设计一个函数,如果找到了就返回1,没找到返回0
//int ret1 = find_num1(arr,3,3,k);
//if (ret == 1)
//{
// printf("找到了\n");
//}
//else
//{
// printf("没找到\n");
//}
int ret2 = find_num2(arr,&x,&y,k);
if (ret2 == 1)
{
printf("找到了 下标:%d %d\n",x,y);
}
else
{
printf("没找到\n");
}
return 0;
}
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭