zoukankan      html  css  js  c++  java
  • 设M 是一个m×n 的矩阵,其中每行的元素从左到右单增有序,每列的元素从上到下单增有序。 给出一个分治算法计算出给定元素x 在M 中的位置或者表明x 不在M 中。分析算法的时间复杂性。

    #include "stdio.h"
    int M[5][5]=
    {
    	{ 1, 2, 3, 4, 5},
    	{ 6, 7, 8, 9,10},
    	{11,12,13,14,15},
    	{16,17,18,19,20},
    	{21,22,23,24,25}
    };
    int x=26;
    int MatrixBinary(int M[5][5],int rb,int re,int cb,int ce)
    {
    	int rm=(rb+re)/2;
    	int cm=(cb+ce)/2;
    	if (rb>re || cb>ce)
    	{
    		return 0;
    	}
    	if(x==M[rm][cm])
    	{
    		printf("rowStart=%d colStart=%d M[rm][cm]=%d\n",rm,cm,M[rm][cm]);
    		return 1;
    	}
    	else if (rb==re && cb==ce)
    	{
    		return 0;
    	}
    	if(x>M[rm][cm])
    	{	
    		return MatrixBinary(M,rb,re,cm+1,ce)||MatrixBinary(M,rm+1,re,cb,cm);
    	}
    	else
    	{	
    		return MatrixBinary(M,rb,rm-1,cb,ce)||MatrixBinary(M,rm,re,cb,cm-1);
    	}
    }
    int main()
    {
    	int a=MatrixBinary(M,0,4,0,4);
    	printf("flag=%d\n",a);
    	return 0;
    }


     

  • 相关阅读:
    线性代数学习路线
    补充.关于秩的不等式
    第十讲.无关性、基与维数
    第九讲.Ax = b
    第八讲.Ax = 0
    大三下学期第一个月反思
    第六讲.LU分解
    第五讲.矩阵的逆
    第四讲.矩阵的运算
    NAT 实验
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3091467.html
Copyright © 2011-2022 走看看