杨氏矩阵中查找元素
2015-11-21 22:09
381 查看
在杨氏矩阵中查找一个元素是否存在
杨氏矩阵即每一行均以递增顺序排列,每列从上到下也为递增顺序
方法一:数组
杨氏矩阵即每一行均以递增顺序排列,每列从上到下也为递增顺序
方法一:数组
#include<stdio.h> #include<stdlib.h> #define COLS 3 #define ROWS 3 //要查找只要在找到右上角的元素和输入元素进行比较。如果右上角元素大,即可排除其他行,若小 //,则可排除本行,继续循环,用输入元素和右上角的元素进行比较 int find(int arr[][COLS], int rows, int cols,int key)//形参不分配空间,可以省略ROWS { int row = 0; int col = cols - 1; while ((row <= 2) && (col >= 0)) { if (arr[row][col] > key) { col--; } else if (arr[row][col] < key) { row++; } else { return 1; } } return -1; } int main() { int arr[ROWS][COLS] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int ret; int key ; scanf("%d", &key); ret= find(arr, ROWS, COLS, key); if (ret == 1) printf("exist\n"); else if (ret == -1) printf("not exist\n"); system("pause"); return 0; }方法二:结构体
#include<stdio.h> #include<stdlib.h> struct Ret { int row; int col; }; #define COLS 3 #define ROWS 3 struct Ret find(int arr[][COLS], int rows, int cols,int key)//形参不分配空间,可以省略ROWS { int row = 0; int col = cols - 1; struct Ret ret; while ((row <= 2) && (col >= 0)) { if (arr[row][col] > key) { col--; } else if (arr[row][col] < key) { row++; } else { ret.col=col; ret.row = row; return ret; } } ret.col = -1; ret.row = -1; return ret; } int main() { int arr[ROWS][COLS] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; struct Ret ret; int key ; scanf("%d", &key); ret= find(arr, ROWS, COLS, key); if (ret.col != -1) { printf("%d\n ", arr[ret.col][ret.row]); printf("exist\n"); } else if (ret.col == -1) printf("not exist\n"); system("pause"); return 0; }
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- ruby 数组使用教程
- Ruby中的数组和散列表的使用详解
- C#实现AddRange为数组添加多个元素的方法
- C#动态调整数组大小的方法
- Lua和C语言的交互详解
- 详解Lua中的数组概念知识
- Perl中的列表和数组学习笔记
- 探索PowerShell (八) 数组、哈希表(附:复制粘贴技巧)
- C#中数组初始化与数组元素复制的方法
- C#交错数组用法实例
- Linux Shell 数组建立及使用技巧
- PowerShell数组的一些操作技巧
- C#通过yield实现数组全排列的方法
- C#不重复输出一个数组中所有元素的方法
- C#实现将数组内元素打乱顺序的方法
- C#中结构体和字节数组转换实现
- Ruby简明教程之数组和Hash介绍
- 关于C语言中参数的传值问题