1 条题解

  • 3
    @ 2025-10-18 19:38:30

    “看到比赛题第一步,咱们先~兴~奋~”

    首先看题目要求,大概意思就是看自己得到了几种牌,输出 52种数 52-种数 即可;

    But,学长学长,52个ifif还是太吃操作了,mapmap也不想用,有没有其他简单又好用的思路呢?有的兄弟,有的;

    首先我们知道,STL里的string类型是有find这个函数的,它会返回查找串在总串里第一次出现的位置,若串中没有找到查找串则返回string::npos(可以用-1代替但是这个-1是unsigned long类型)

    那么好,我们只需要一个字符串把已有的牌存起来,若出现之前没有的牌就把它放到字符串里,然后让剩余牌数累减或拥有牌数累加即可

    代码如下

    #include <bits/stdc++.h>
    #define ll long long
    using namespace std;
    
    int n,ans;
    string st;
    
    signed main() {
    	cin>>n;
    	ans=52;
    	for(int i=1;i<=n;i++){
    		string s;
    		cin>>s;
    		if(st.find(s)==string::npos){
    			ans--;
    			st+=s;
    		}
    	}
    	cout<<ans;
    	return 0;
    }
    

    “第二步,5s就把这道题做出来了”

    “第三步,太爽了(标准河间口音)”

    • 1

    信息

    ID
    11
    时间
    1000ms
    内存
    256MiB
    难度
    9
    标签
    递交数
    9
    已通过
    7
    上传者