zoukankan      html  css  js  c++  java
  • 队列堆栈和数组-三角矩阵

    #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);
    }
  • 相关阅读:
    批处理 bat 查询局域网内在线电脑IP
    svn忽略不需要同步的文件夹或文件
    脚本设置IP bat 命令行设置自动获取IP和固定IP
    Lua中使用状态机FSM简单例子
    Lua 数组排序 table.sort的注意事项
    lua中怎么替换掉字符串中的$^特殊字符?
    C#应用程序隐藏调用bat脚本
    Oracle 基础教程
    Python编程
    利用Python进行数据分析(九)NumPy高级应用
  • 原文地址:https://www.cnblogs.com/kbyd/p/3995500.html
Copyright © 2011-2022 走看看