C++中的set用法(附加:牛客題)
阿新 • • 發佈:2019-01-24
給6個火柴棍,問能不能拼成“熊”或者“象”
“熊”:4根棍子長度一樣,另外2根棍子長度不一樣
“象”:4根棍子長度一樣,另外2根棍子長度一樣。
如果可以拼出熊,輸出“Bear”
如果可以拼出象,輸出“Elephant”
如果都不可以拼出,輸出“Hernia”
#include <iostream> #include<cstdio> #include <set> using namespace std; struct node{ int data; int num; }; int main() { node a[6]; int i,j; set<int> s; for(i=0;i<6;i++){ scanf("%d",&a[i].data); a[i].num=0; } for(i=0;i<6;i++){ for(j=0;j<6;j++){ if(a[i].data==a[j].data){ a[i].num++; } } } for(i=0;i<6;i++){ s.insert(a[i].num); } if((s.count(4)||s.count(5))&&s.count(1)){ puts("Bear"); } else if((s.count(4)&&s.count(2))||s.count(6)){ puts("Elephant"); } else{ puts("Hernia"); } return 0; }
set中常用的方法
insert() 向set裡面插入一個元素
begin() 返回set容器的第一個元素
end() 返回set容器的最後一個元素
clear() 刪除set容器中的所有的元素
empty() 判斷set容器是否為空
max_size() 返回set容器可能包含的元素最大個數
size() 返回當前set容器中的元素個數
rbegin 返回的值和end()相同
rend() 返回的值和rbegin()相同
/* count() 用來查詢set中某個某個鍵值出現的次數。 這個函式在set並不是很實用, 因為一個鍵值在set只可能出現0或1次, 這樣就變成了判斷某一鍵值是否在set出現過了。 */ #include <iostream> #include <set> using namespace std; int main() { set<int> s; s.insert(1); s.insert(2); s.insert(3); s.insert(1); cout<<"1 出現的次數是 :"<<s.count(1)<<endl; cout<<"4 出現的次數是 :"<<s.count(4)<<endl; return 0; } /* 結果: 1 出現的次數是 :1 4 出現的次數是 :0 */