心胸决定格局,眼界决定境界...

Z字形扫描矩阵

https://www.cnblogs.com/tgycoder/p/4991663.html

#include "stdafx.h"
#include <malloc.h>
#define N 10
int matrix[N][N];

typedef enum State{ R, LD, D, RU };

State last_state = RU;
State next_state = R;
int   row = 0;
int   col = 0;
int search_element(int** matrix, int matrix_size, int search_num)
{
	int result=-1;
	while (search_num--)
	{
		printf("%d ", result = matrix[row][col]);//打印出走的每一步
		switch (next_state)
		{
		case R:
			col = col + 1;
			last_state = R;
			next_state = LD;//只走一步
			break;
		case LD:
			row = row + 1;
			col = col - 1;
			last_state = LD;
			if (col == 0)
			{
				next_state = D;
			}
			else
			{
				next_state = LD;
			}					
			break;
		case D:
			row = row + 1;
			last_state = D;
			next_state = RU;
			break;//只走一步
		case RU:
			row = row - 1;
			col = col + 1;
			if (row == 0)
			{
				next_state = R;
			}
			else
			{
				next_state = RU;
			}
			break;
		}

		//print 打印遍历过的元素
	}
	return result;
}

int _tmain(int argc, _TCHAR* argv[])
{
	int** matrix = (int**)malloc(N*sizeof(int*));
	for (int i = 0; i < N; i++)
	{
		matrix[i] = (int*)malloc(N*sizeof(int));
	}
	for (int i = 0; i < N; i++)//矩阵初始化
	{
		for (int j = 0; j < N; j++)
		{
			matrix[i][j] = i*N + j+1;
			printf("%3d ",matrix[i][j]);
		}	
		printf("\n");
	}
	printf("\nfind result value = %d\n", search_element(matrix, N, 22));
	return 0;
}

  

posted @ 2018-01-09 21:18  WELEN  阅读(318)  评论(0)    收藏  举报