poj 3792 Area of Polycubes (简单模拟)
2014-04-03 20:39
204 查看
题目
题意:在三维坐标系中,给定n个立方体的中心坐标,立方体的边长为1,按照输入顺序,后来输入的必须和之前输入的立方体有公共的边。
而且,不能和之前输入的立方体相同。
如果满足条件,输出表面积。如果不满足,输出不符合条件的那一组。
题意:在三维坐标系中,给定n个立方体的中心坐标,立方体的边长为1,按照输入顺序,后来输入的必须和之前输入的立方体有公共的边。
而且,不能和之前输入的立方体相同。
如果满足条件,输出表面积。如果不满足,输出不符合条件的那一组。
#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <algorithm> using namespace std; struct node { int x, y, z; }p[110], m; int dx[10] = {0,0,0,0,1,-1}; int dy[10] = {0,1,0,-1,0,0}; int dz[10] = {1,0,-1,0,0,0}; int main() { int ca, t, i, j, n, flag, f, k; int area; scanf("%d", &t); for(ca = 1; ca <= t; ca++) { f = 0; scanf("%d", &n); area = 6*n; for(i = 1; i <= n; i++) scanf("%d,%d,%d", &p[i].x, &p[i].y, &p[i].z); for(i = 2; i <= n; i++) { flag = 0; for(j = 1; j < i; j++) { if(p[i].x==p[j].x&&p[i].y==p[j].y&&p[i].z==p[j].z) { f = i; break; } for(k = 0; k < 6; k++) { m.x = p[i].x + dx[k]; m.y = p[i].y + dy[k]; m.z = p[i].z + dz[k]; if(m.x==p[j].x&&m.y==p[j].y&&m.z==p[j].z) { flag = 1; area -= 2; } } } if(flag==0) f = i; if(f) break; } if(f==0) printf("%d %d\n", ca, area); else printf("%d NO %d\n", ca, f); } return 0; }
相关文章推荐
- POJ 3792 Area of Polycubes(模拟)
- poj 3792 Area of Polycubes
- POJ 3792 Area of Polycubes(思维)
- Area of Polycubes poj 3792
- POJ 3792 Area of Polycubes 解题报告
- POJ 3792 Area of Polycubes 已被翻译
- liveoj 4238 - Area of Polycubes(搜索)
- 南邮 OJ 1537 G ? Area of Polycubes
- Area of Polycubes
- poj 3083 Children of the Candy Corn (广搜,模拟,简单)
- poj 1389 Area of Simple Polygons(线段树做法)
- POJ 1389 Area of Simple Polygons(线段树+扫描线求矩形面积并)
- POJ 1028(简单的模拟浏览器)
- POJ 1286 Necklace of Beads(Polya简单应用)
- POJ 2996 简单模拟
- POJ 3295 Tautology 永真式,栈的简单模拟
- 2018_1_21_MANAGER_简单模拟_poj_1281
- (简单模拟2.4.2)POJ 1207 The 3n + 1 problem(直叙式模拟——输入时前一个数可能比后一个数要大,但输出时原样输出)
- POJ 3083 Children of the Candy Corn (简单的搜索)
- poj_1573 Robot Motion(简单模拟)