1. 程式人生 > >C++中的set用法(附加:牛客題)

C++中的set用法(附加:牛客題)

給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
*/