今天在Topcoder上做一道简单题,感觉这道题挺有意思的,就保存起来吧!
- Problem Statement
- A company is developing a 3-dimensional computer monitor. The monitor has a resolution of 1024 by 1024 by 1024 pixels. The monitor is a cube, with a grid of lasers on three sides of the cube, all of which share an edge (that is, no grid is on the face directly opposite another grid). As a result, one of these grids is in the XY-plane of the monitor, another is in the YZ-plane, and the third is in the XZ-plane. To "light up" a pixel, the laser on each grid which corresponds to the pixel's coordinate needs to be on, and the intersection of these three lasers is what creates the point of light.
- Create a class FullMonitor containing a method numLasers which takes as an argument a vector <string> pixels, representing the lit pixels, and returns the total number of lasers that must be activated. If the given vector <string> of pixels cannot be turned on without turning on other pixels (see example 4) then return -1.
- For example, if we wish to light the point (4,4,3), the XY-plane would have to light up the laser at (4,4), the YZ-plane would have to light up the laser at (4,3), and the XZ-plane would have to light up the laser at (4,3). In total, 3 lasers would have to be activated. If we were to then light the point (4,3,3), the following lasers would have to be activated: XY-plane (4,3), YZ-plane (3,3), XZ-plane (4,3). Since the XZ-plane's (4,3) laser is already activated, a total of 5 lasers would have to be activated.
- Each element of pixels is formatted as (quotes added for clarity) "X,Y,Z" where X, Y, and Z are the respective coordinates of the pixel. Each coordinate is an integer between 0 and 1023 inclusive (with no extra leading zeroes).
- Definition
- Class: FullMonitor
- Method: numLasers
- Parameters: vector <string>
- Returns: int
- Method signature: int numLasers(vector <string> pixels)
- (be sure your method is public)
- Notes
- - Each laser grid has 1024*1024=1048576 lasers, for a total of 3145728 possible activated lasers. However, this situation requires more lit pixels than can be represented using the input.
- Constraints
- - pixels will contain between 0 and 50 elements, inclusive.
- - each element of pixels will be formatted as (quotes added for clarity) "X,Y,Z" where X, Y, and Z are integers between 0 and 1023, inclusive, with no extra leading zeroes
- - each element of pixels will be unique.
- Examples
- 0)
- {"25,25,25"}
- Returns: 3
- Only one pixel is lit, and it requires 3 lasers to be displayed.
- 1)
- {"25,25,25","25,25,26"}
- Returns: 5
- 2 pixels are lit, but share the same XY laser at point (25,25), so only 5 lasers are lit.
- 2)
- {"25,25,25","25,25,26","25,26,26","25,26,25"}
- Returns: 8
- 3)
- {"1000,1005,20","20,50,20","30,90,10","1005,30,90",
- "90,1000,1005","30,90,20","1000,90,10","40,90,10",
- "1000,1000,1000"}
- Returns: -1
- 4)
- {"1,1,3","1,3,1","3,1,1"}
- Returns: -1
- These three pixels cannot be lit without lighting the pixel (1,1,1), so return -1.
- 5)
- {"1,1,3","1,3,1","3,1,1","1,1,1"}
- Returns: 9
- The previous example, with (1,1,1) activated to make it possible.
- 6)
- {"938,134,626","1015,310,957","427,741,13","388,513,56",
- "914,169,526","716,540,478","796,461,500","506,886,866",
- "44,185,744","474,104,631","557,402,744","992,132,804",
- "440,499,122","895,845,612","711,576,984","281,846,475",
- "781,620,301","305,632,954","874,659,36","17,978,393",
- "765,481,372","612,316,8","902,281,515","272,125,1012",
- "413,513,987","595,940,1014","858,1019,100","899,554,613",
- "226,995,592","793,939,286","386,41,212","111,899,737",
- "339,199,117","1014,710,638","413,187,56","301,691,368",
- "387,285,286","546,356,739","366,356,660","877,461,737",
- "538,301,629","707,116,7","701,730,70"}
- Returns: -1
- 7)
- {"286,596,559","502,325,84","303,56,960","28,678,821",
- "542,57,303","233,418,91","13,520,124","645,129,889",
- "438,433,951","835,953,56","921,531,943","416,159,446",
- "513,426,1018","778,486,254","132,380,822","828,351,787",
- "659,531,866","893,140,419","603,721,110","888,144,689",
- "861,869,515","632,912,973","435,828,676","526,365,850",
- "162,860,173","637,910,701","169,21,311","431,722,798",
- "674,663,1012","451,343,584","132,380,1000","184,720,1011"}
- Returns: 95
- 8)
- {"1,0,0","4,1,2","0,2,0","0,0,0","4,4,3","2,3,2","0,4,3",
- "4,2,3","4,4,1","2,2,0","4,1,1","4,0,1","1,0,2","1,3,2",
- "0,2,3","4,0,2","2,2,3"}
- Returns: 31
- This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2003, TopCoder, Inc. All rights reserved.