动态开辟有序二维数组

#include<stdio.h>
#include<stdlib.h>
int main()
{
 //int arr[3][4]
 //
 int row;
 int col;
 scanf_s("%d%d", &row, &col);

int  **q = (int **)malloc(sizeof(int)* row);//开辟一块空间 存储一个含有row数组指针的数组
 q[0] = (int *)malloc(sizeof(int)*col);
 for (int i = 1; i < row;i++)
 {
  q[i] = q[0] + i;//q[0]为  0000首元素地址//数组指针。+1z
 }//jia
 int j = 0;
 int k = 0;
 for (j = 0; j < row; j++)
 {
  for (k = 0; k < col; k++)
  {
   q[j][k] = j*k + k;
   printf("%d   ", q[j][k]);
  }
 }
 system("pause");
 return 0;
}

动态开辟有序二维数组

时间: 2024-10-10 21:20:15

  动态开辟有序二维数组的相关文章

【c语言】动态开辟一个二维数组

// 动态开辟一个二维数组 #include <stdio.h> #include <stdlib.h> int main() { int i = 0; int j = 0; int line = 0; int row = 0; int **p = NULL; printf("输入行数:"); scanf("%d", &line); printf("\n"); printf("输入列数:");

数组问题 1.行列有序二维数组中查找2.在一组数成对出现的数中有两个数只出现一次3.在移位数组中查找一个数

一.在一个二维数组中,每一行都按从左到右递增的顺序排序,每一列都按从上到下的递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 思路: 首先选取数组中右上角的数字.如果该数字等于要查找的的数字,查找过程结束:如果该数字大于要查找的数字,剔除这个数字所在的列:如果该数字小于要查找的数字,剔除这个数字所在的行.也就是说如果要查找的数字不在数组的右上角,则每一次都在数组的查找范围剔除一行或一列,这样每一步都可以缩小查找的范围. 实现过程如下: 运行结果如下:

用malloc开辟一个二维数组

#include <stdio.h> #include <stdlib.h> int main() { int **p; int i; int j; int row,coloum; printf("请输入你所要申请的二维数组的行和列:"); scanf("%d%d",&row,&coloum); p=(int**)malloc(sizeof(int*)*row); for(i=0;i<row;i++) { p[i]=(i

有序二维数组中的查找

一个二维数组,每一行按照从左到右递增,每一列按照从上到下递增,查找数组中是否存在某个数.如数组: 1  2  8    9 2  4  9   12 4  7  10  13 6  8  11  15 思路: 这道题有其特殊性,从右上角或者左下角开始查找的方向是确定的.这句话是说比如是查找7,我们从右上角开始,9大于7,则减少列下标,查找13的话就增加行下表,查找的方向是确定的,这样就容易实现了. public class Item03 { public static void main(Str

查找有序二维数组中的元素

给定一个已排序的二维数组array,在其中查找一个元素value 查找策略如下图: (1)将value和数组的右上角的值比较,如果大于右上角的值,则移除数组的第一行. (2)将value和数组的左下角的值比较,如果大于左下角的值,则移除数组的第一列. (3)直到查找完毕,已经找不到符合(1)(2)的情况后,或者数组只剩下一个元素 (4)得到一个较小的二维数组,再遍历该数组即可.             /** * Created by wuchao on 17-3-29. */ import j

有序二维数组中搜索特定的数

关于二维有序数组中搜索,其题目如下: 给定一个矩阵,都是整数,每一行从左到右升序,每一列从上到下有序,例如下面的矩阵 [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50] ] 请用最快的时间找出特定的数,例如,输入3,存在这个数,输入15,不存在这个数. 实现如下的函数bool FindArray(int *pArray,int nWidth,int nheight,int nKey). 最笨的方法是逐个遍历进行比较,如果是这样,这题目就没什么意义

Leetcode 240 Search a 2D Matrix II (二分法和分治法解决有序二维数组查找)

1.问题描述 写一个高效的算法,从一个m×n的整数矩阵中查找出给定的值,矩阵具有如下特点: 每一行从左到右递增. 每一列从上到下递增. 2. 方法与思路 2.1 二分查找法 根据矩阵的特征很容易想到二分法,但是这是一个二维的矩阵,如何将问题转化为一维是关键.实际上我们可以根据矩阵的第一列确定值可能所在的行的范围(limu,limd),其中limu=0,使得matrix[0][0]≤matrix[i][0]≤matrix[limd][0],i∈[0,limd].而确定limd的值可以使用二分法.

经典面试算法题:线性查找有序二维数组

从右上角开始搜索,当前的元素map[x][y]和要搜索的数n有如下可能: map[x][y]==n --> 返回truemap[x][y]>n   --> 向左移动map[x][y]<n   --> 向下移动 搜索过程例子: AC代码: import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in);

动态申请和释放一个二维数组

动态申请一个二维数组也很常见,下面是常见的两种形式. //方法1 unsigned char** pImg= new unsigned char*[m]; for(int i=0;i<m;i++){ pImg[i]=new unsigned char[n]; } //方法2 unsigned char** pImg= new unsigned char*[m]; unsigned char* arr= new unsigned char[m*n]; for(int i=0;i<m;i++){