zoukankan      html  css  js  c++  java
  • poj 3792 Area of Polycubes (简单模拟)

    题目

    题意:在三维坐标系中,给定n个立方体的中心坐标,立方体的边长为1,按照输入顺序,后来输入的必须和之前输入的立方体有公共的边。

    而且,不能和之前输入的立方体相同。

    如果满足条件,输出表面积。如果不满足,输出不符合条件的那一组。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstdlib>
     4 #include <cstring>
     5 #include <cmath>
     6 #include <algorithm>
     7 using namespace std;
     8 
     9 struct node
    10 {
    11     int x, y, z;
    12 }p[110], m;
    13 int dx[10] = {0,0,0,0,1,-1};
    14 int dy[10] = {0,1,0,-1,0,0};
    15 int dz[10] = {1,0,-1,0,0,0};
    16 
    17 int main()
    18 {
    19     int ca, t, i, j, n, flag, f, k;
    20     int area;
    21     scanf("%d", &t);
    22     for(ca = 1; ca <= t; ca++)
    23     {
    24         f = 0;
    25         scanf("%d", &n);
    26         area = 6*n;
    27 
    28         for(i = 1; i <= n; i++)
    29             scanf("%d,%d,%d", &p[i].x, &p[i].y, &p[i].z);
    30         for(i = 2; i <= n; i++)
    31         {
    32             flag = 0;
    33             for(j = 1; j < i; j++)
    34             {
    35                 if(p[i].x==p[j].x&&p[i].y==p[j].y&&p[i].z==p[j].z)
    36                 {
    37                     f = i;
    38                     break;
    39                 }
    40                 for(k = 0; k < 6; k++)
    41                 {
    42                     m.x = p[i].x + dx[k];
    43                     m.y = p[i].y + dy[k];
    44                     m.z = p[i].z + dz[k];
    45                     if(m.x==p[j].x&&m.y==p[j].y&&m.z==p[j].z)
    46                     {
    47                         flag = 1;
    48                         area -= 2;
    49                     }
    50                 }
    51             }
    52             if(flag==0)
    53             f = i;
    54             if(f)
    55             break;
    56         }
    57         if(f==0)
    58         printf("%d %d
    ", ca, area);
    59         else
    60         printf("%d NO %d
    ", ca, f);
    61     }
    62     return 0;
    63 }
  • 相关阅读:
    快速排序
    优先队列
    堆排序
    树、二叉树基础
    分治法
    递归算法详细分析
    算法基础
    Linux文件系统详解
    fs/ext2/inode.c相关函数注释
    块设备的读流程分析
  • 原文地址:https://www.cnblogs.com/bfshm/p/3643806.html
Copyright © 2011-2022 走看看