2017年12月14日 星期四

[C_DT36-易] 天際線資料群(C++)

[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 ,輸出對應的資料順序對應了輸入時的資料順序,每個字母以一個空白鍵分隔。
範例 :

輸入範例輸出範例
6
31 55
31 22
1 99
31 55
44 10
69 12
Y N Y Y N Y

  1. #include <iostream>      
  2. #include <vector>      
  3. using namespace std;      
  4.       
  5. int main()      
  6. {      
  7.     int num;      
  8.     cin>>num;      
  9.     vector<vector<int> >arr;      
  10.     for(int i=0;i<num;i++)      
  11.     {      
  12.         int x,y;      
  13.         cin>>x>>y;      
  14.         vector<int>inside;      
  15.         inside.push_back(x);      
  16.         inside.push_back(y);      
  17.         arr.push_back(inside);      
  18.     }      
  19.     for(int i=0;i<num;i++)      
  20.     {      
  21.         int c=0;      
  22.         for(int j=0;j<num;j++)      
  23.         {      
  24.             if(arr[i][0]<=arr[j][0] && arr[i][1]<=arr[j][1] && i!=j)      
  25.             {      
  26.                 if(arr[i][0]==arr[j][0] && arr[i][1]==arr[j][1])      
  27.                     c=0;      
  28.                 else      
  29.                 {      
  30.                     c=1;      
  31.                     break;      
  32.                 }      
  33.             }      
  34.         }      
  35.         if(c==1)      
  36.             cout<<"N";      
  37.         else      
  38.             cout<<"Y";      
  39.         if(i!=num-1)      
  40.             cout<<" ";      
  41.     }      
  42.     cout<<endl;      
  43.     return 0;      
  44. }  

沒有留言:

張貼留言