[C_DT36-易] 天際線資料群
問題描述 :
在一群資料當中我們可以分出一部分特殊資料叫天際線資料群,天際線資料有助於在做資料篩選或是決策等方面時會有很大的幫助。在天際線資料群中的資料所有特性不會比其他資料還來的差,換句話說就是不會被其他資料完全取代掉,例如: (5,9) 和 (3,4) 這兩點來看,我們可以發現 (5,9) 這點的兩個維度都比 (3,4) 要來的大,所以 (5,9) 可以完全取代掉 (3,4) ;另外以 (5,9) 和 (7,2) 這兩點來看,可以發現 (5,9) 並不能完全取代掉 (7,2) ,因為 (5,9) 的所有維度並沒有都比 (7,2) 要來的好,因此, (5,9) 是天際線資料,而 (3,4) 不是。
輸入說明 :
第一行輸入一個數字 n ,接著會有 n 行的輸入,每一行輸入代表了一筆 2 維度的正整數資料,每個維度值大於 0 且小於 100 ,各維度之間以一個空白鍵分隔。
輸出說明 :
輸出會有 n 個字母,字母分別是 Y 和 N , Y 代表著該筆資料是天際線資料,反之則是 N ,輸出對應的資料順序對應了輸入時的資料順序,每個字母以一個空白鍵分隔。
範例 :
在一群資料當中我們可以分出一部分特殊資料叫天際線資料群,天際線資料有助於在做資料篩選或是決策等方面時會有很大的幫助。在天際線資料群中的資料所有特性不會比其他資料還來的差,換句話說就是不會被其他資料完全取代掉,例如: (5,9) 和 (3,4) 這兩點來看,我們可以發現 (5,9) 這點的兩個維度都比 (3,4) 要來的大,所以 (5,9) 可以完全取代掉 (3,4) ;另外以 (5,9) 和 (7,2) 這兩點來看,可以發現 (5,9) 並不能完全取代掉 (7,2) ,因為 (5,9) 的所有維度並沒有都比 (7,2) 要來的好,因此, (5,9) 是天際線資料,而 (3,4) 不是。
輸入說明 :
第一行輸入一個數字 n ,接著會有 n 行的輸入,每一行輸入代表了一筆 2 維度的正整數資料,每個維度值大於 0 且小於 100 ,各維度之間以一個空白鍵分隔。
輸出說明 :
輸出會有 n 個字母,字母分別是 Y 和 N , Y 代表著該筆資料是天際線資料,反之則是 N ,輸出對應的資料順序對應了輸入時的資料順序,每個字母以一個空白鍵分隔。
範例 :
輸入範例 | 輸出範例 |
6 31 55 31 22 1 99 31 55 44 10 69 12 | Y N Y Y N Y |
- #include <iostream>
- #include <vector>
- using namespace std;
- int main()
- {
- int num;
- cin>>num;
- vector<vector<int> >arr;
- for(int i=0;i<num;i++)
- {
- int x,y;
- cin>>x>>y;
- vector<int>inside;
- inside.push_back(x);
- inside.push_back(y);
- arr.push_back(inside);
- }
- for(int i=0;i<num;i++)
- {
- int c=0;
- for(int j=0;j<num;j++)
- {
- if(arr[i][0]<=arr[j][0] && arr[i][1]<=arr[j][1] && i!=j)
- {
- if(arr[i][0]==arr[j][0] && arr[i][1]==arr[j][1])
- c=0;
- else
- {
- c=1;
- break;
- }
- }
- }
- if(c==1)
- cout<<"N";
- else
- cout<<"Y";
- if(i!=num-1)
- cout<<" ";
- }
- cout<<endl;
- return 0;
- }
沒有留言:
張貼留言