tableau Young: Encontrar um número de uma matriz bidimensional

I, intitulado

Há uma matriz bidimensional, cada linha da matriz é incrementado da esquerda para a direita, de cima para baixo de cada coluna é incrementada para descobrir se existe um número neste array.
Requisitos: menos do que a complexidade de tempo de O (N);

Em segundo lugar, a idéia

. 4. 6. 1
2. 5. 7
. 3. 6. 9
ideia: para encontrar um número de matriz bidimensional convencional em tais métodos são atravessadas a partir do início ao fim, uma vez todas as figuras, nesta complexidade de tempo caso é O (n), não satisfaz o requisitos tópicos;
make complexidade menos de O (n), o que significa que eles não podem travessia do início ao fim, podemos re-seleccionar um ponto de partida. (Tempo Tal começar a procurar matriz bidimensional de cinco escolhas,
centro, de canto superior esquerdo, canto superior direito, inferior esquerdo, canto inferior direito, mas óbvias, a partir do canto médio ou superior esquerdo, canto inferior direito para começar, então, maior ou menor que sua direção mais, atravessar um monte de problemas.
e canto superior direito e inferior esquerdo mais conveniente, uma direção é maior do que ele, uma direção é menor do que ele. neste momento, nós escolheu o canto superior direito como a posição inicial.

, Implementação de código terceiro

#include<stdio.h>
#include<Windows.h>
#pragma warning(disable:4996)

int YangSquare(int a[][3], int x, int y,int z)
{
	int i = 0; int j = 2;
	while (i<x&&j>=0)
	{
		if (z > a[i][j])
		{
			i++;
		}
		else if (z < a[i][j])
		{
			j--;
		}
		else
		{
			return z;
		}
	}
	return 0;
}

int main()
{
	int z = 0;
	int a[3][3] = { 1, 4, 6,
		            2, 5, 7,
		            3, 6, 9 };
	printf("请输入你要查找的数:\n");
	scanf("%d", &z);
	printf("%d\n",YangSquare(a, 3, 3,z));
	system("pause");
	return 0;
}
Publicado 14 artigos originais · ganhou elogios 0 · Visualizações 142

Acho que você gosta

Origin blog.csdn.net/qq_41041036/article/details/103828456
Recomendado
Clasificación