二维数组中的查找,杨氏矩阵

wKiom1Y54wijHQMyAABkSe1XBb8649.jpg

#include<stdio.h>
#include<stdlib.h>
int find(int arry[100][100], int x, int y, int key)
{
	int i = 0;
	int j = 0;
	for (i = 0; i<x; i++)
	{
		for (j = 0; j<y; j++)
		{
			if (key == arry[i][j])
				return 1;

		}
	}
	return -1;
}
int main()
{
		int arr[100][100];
		int m, n; 
		int ret;int k;	
		printf("输入要查询的数:");
		scanf_s("%d", &k);
		printf("输入行和列:");
		scanf_s("%d%d", &m, &n);
		printf("输入%d行%d列的数:\n",m,n);
		for (int i = 0; i < m; i++)
		{
			for (int j = 0; j < n; j++)
			{
				scanf_s("%d", &arr[i][j]);
			}
		}
		ret = find(arr, m, n, k);
		if (ret == 1)
			printf("存在!");
		else
			printf("不存在!");

	system("pause");
	return 0;
}


2.

#include <stdio.h>

#define COLS 3
#define ROWS 3

int find_num(int arr[COLS][ROWS], int key, int cols, int rows)
{
	if (cols > 0 && rows > 0)
	{
		int col = 0;
		int row = rows - 1;
		while ((col < cols) && (row >= 0))
		{
			if (arr[col][row] < key)
			{
				col++;
			}
			else if (arr[col][row] == key)
			{
				return 1;
			}
			else
			{
				row--;
			}
		}
		return 0;
	}
	return -1;
}
int main()
{
	int arr[COLS][ROWS];
	int i = 0;
	int j = 0;
	int key = 0;
	for (i = 0; i < COLS; i++)
	{
		for (j = 0; j < ROWS; j++)
		{
			arr[i][j] = i*ROWS + j;
		}
	}
	scanf("%d", &key);
	int ret = find_num(arr, key, COLS, ROWS);
	if (ret == 1)
	{
		printf("exist\n");
	}
	else
	{
		printf("not exist\n");
	}
	system("pause");
	return 0;
}


你可能感兴趣的:(include)