• 队列堆栈和数组-三角矩阵


    #include<iostream>
    #include <iomanip>
    using namespace std;
    enum TriangleTye{leftBottom,leftUp,rightBottom,rightUp};
    struct TriangleMatrix
    {
        int* nums;
        int scale;
        TriangleTye triangleTye;
        int size;
    };
    
    TriangleMatrix* createTriangleMatrix(int scale,TriangleTye triangleTye)
    {
        int size = scale*(scale+1)/2;
        TriangleMatrix* p = (TriangleMatrix*)malloc(sizeof(TriangleMatrix));
        p->nums = new int[size+1];
        p->scale=scale;
        p->triangleTye=triangleTye;
        p->size=size;
        return p;
    }
    
    int getElement(TriangleMatrix* matrix,int i,int j)
    {
        switch ((matrix->triangleTye))
        {
        case leftBottom:
            if(i<j)
                return 0;
            else return matrix->nums[i*(i-1)/2+j-1];
            break;
    
        case leftUp:
            if(matrix->scale-i+1<j)
                return 0;
            else return matrix->nums[matrix->size - ((matrix->scale-i)*(matrix->scale-i+1)/2+(matrix->scale-i+1-j))-1];
            break;
    
        case rightBottom:
            if(matrix->scale-i+1>j)
                return 0;
            else return matrix->nums[i*(i-1)/2+j-(matrix->scale-i)-1];
            break;
    
        case rightUp:
            if(i>j)
                return 0;
            else  return matrix->nums[matrix->size - (matrix->scale-i+1)*(matrix->scale-i+2)/2+j-i];
            break;
    
        default:
            return -1;
            break;
        }
    }
    
    void OuptPut(TriangleMatrix* p)
    {
        
        for(int i=1;i<=p->scale;i++)
        {
            for(int j=1;j<=p->scale;j++)
            {
                printf("%d ",getElement(p,i,j)); 
            }
            printf("
    "); 
        }
    }
    
    void main()
    {
        printf("
    "); 
        printf("%s","four kinds of triangle matrix, and the elements is:"); 
        printf("
    "); 
        int x=9;
        TriangleMatrix* p= createTriangleMatrix(x,leftBottom);
        for(int i=0;i<x*(x+1)/2;i++)
        {
            p->nums[i]=rand()%10;
            printf("%d ",p->nums[i]); 
        }
         printf("
    "); 
         printf("vertical corner at leftBottom:
    "); 
         OuptPut(p);
    
         printf("vertical corner at rightBottom:
    "); 
         p->triangleTye = rightBottom;
         OuptPut(p);
    
         printf("vertical corner at leftUp:
    "); 
         p->triangleTye = leftUp;
         OuptPut(p);
    
        printf("vertical corner at rightUp:
    "); 
         p->triangleTye = rightUp;
         OuptPut(p);
    
        printf("Done
    "); 
        scanf("%d",&x);
    }
  • 相关阅读:
    kali2018 安装****
    IIS PUT
    解析漏洞总结
    深入理解MVC
    Linux常用命令整理
    nginx视频直播/点播服务干货分享
    记因PHP的内存溢出导致的事故之解决
    五环之歌之PHP分页
    phpstorm 2017.1 激活
    拉伸收缩广告
  • 原文地址:https://www.cnblogs.com/kbyd/p/3995500.html
Copyright © 2020-2023  润新知