zoukankan      html  css  js  c++  java
  • ZJNU 1535

    因为从俯视图看,输入输出的视角是从右下方看向左上方的

    所以左上角的正方体最有可能被其他正方体挡住

    立体上,底部的正方体最有可能被顶部的正方体挡住

    所以绘图应该从后往前,从下往上绘制

    剩下的就是一大堆计算和判断了

    采用的是先绘制出规范的图再与输入的图做对比的方式

    #include<stdio.h>
    #include<string.h>
    int n,m,ar[21][21];
    char ori[200][200],bd[200][200],node[6][8]={
        "..+---+",
        "./   /|",
        "+---+ |",
        "|   | +",
        "|   |/.",
        "+---+.."
    };
    void dr(int x,int y){
        int i,j;
        for(i=0;i<6;i++)
            for(j=0;j<7;j++)
                if(node[i][j]!='.')
                    bd[x+i][y+j]=node[i][j];
    }
    int main(){
        int i,j,h=-1,w,x,y;
        scanf("%d%d",&n,&m);
        for(i=0;i<n;i++)
            for(j=0;j<m;j++)
                scanf("%d",&ar[i][j]);
        getchar();
        while(gets(ori[++h]));
        w=strlen(ori[0]);
        for(i=0;i<h;i++)
            memset(bd[i],'.',w);
        for(i=0;i<n;i++)
            for(j=0;j<m;j++){
                x=h-(4+2*n)+2*i;
                y=(n-1)*2+4*j-2*i;
                while(ar[i][j]--){
                    dr(x,y);
                    x-=3;
                }
            }
        for(i=0;i<h;i++)
            for(j=0;j<w;j++)
                if(bd[i][j]!=ori[i][j]){
                    puts("NO");
                    return 0;
                }
        puts("YES");
        
        return 0;
    }
  • 相关阅读:
    基础知识
    贪心-合并区间、交集、无重叠区间、俄罗斯套娃信封
    递归实现煎饼排序
    递归实现基本计算器+-*/()
    滑动窗口---最小覆盖子串、字母异位词、
    二分查找
    N皇后
    二叉搜索树-合法性、增、删、查
    循环
    二分法
  • 原文地址:https://www.cnblogs.com/stelayuri/p/12235327.html
Copyright © 2011-2022 走看看