• 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 }
  • 相关阅读:
    Win7停止更新升Win10教程
    linux 进程管理
    linux vi/Vim编辑器
    linux 文件管理
    linux 目录管理
    [开发笔记]-C#判断文件类型
    [开发笔记]-C#获取pdf文档的页数
    [转载]每周问问你的团队这10个问题
    [转载]番茄时间管理法(Pomodoro Technique):一个番茄是如何让你工作更有效率的
    [开发笔记]-Linq to xml学习笔记
  • 原文地址:https://www.cnblogs.com/bfshm/p/3643806.html
Copyright © 2020-2023  润新知