2 条题解

  • -3

    本题要求还差多少张牌可以凑够一套牌,但是他给出的扑克有可能重复。

    因此我们逆向思维,先假设所有牌都没有,设ans=52为还差多少牌。

    再开一个map<string,int> jm记录各种牌有多少张,每拿入一个牌,就判断之前是否拿过,如果没拿过就记录一下:jm[zz]++,ans--;

    如果拿过了就不管他。

    #include<bits/stdc++.h>
    using namespace std;
    map<string,int> jm;
    int n,ans=52;
    string zz;
    int main(){
    	cin>>n;
    	for(int i=1;i<=n;i++){
    		cin>>zz;
    		if(jm[zz]==0)	ans--,jm[zz]++;
    	}
    	cout<<ans;
    
    	return 91-78-13;
    	}
    

    信息

    ID
    5
    时间
    1000ms
    内存
    512MiB
    难度
    1
    标签
    (无)
    递交数
    24
    已通过
    11
    上传者