117. 占卜DIY

原题链接:117. 占卜DIY



解题思路

搜索+模拟

感觉这道题目,就是一道纯模拟的题目,没有什么难点,大致有几个易错点,这里提醒一下。

  1. 每次拿该堆的末尾,这一点容易犯错,因为不是拿之前的第四张牌,而是当前的末尾的牌
  2. 读入问题,这里读入需要特判几个点,也就是A,10,J,Q,K
  3. 注意储存问题,我的代码,下标0表示堆顶,5表示堆尾

样例代码

#include <bits/stdc++.h>
using namespace std;
vector<int> a[14];
int sum[14],c[14];
inline int get(char x)
{
    if(x>='2' && x<='9')
        return x-'0';
    if(x=='A')
        return 1;
    if(x=='0')
        return 10;
    if (x=='J')
        return 11;
    if (x=='Q')
        return 12;
    if (x=='K')
        return 13;
}
int main()
{
    for(int i=1;i<=13;i++)
    {
        a[i].push_back(0);
        for(int j=1;j<=4;j++)
        {
            char ch=getchar();
            getchar();
            a[i].push_back(get(ch));
        }
        c[i]=4;
    }
    for(int i=1;i<=4;i++)
    {
        int x=a[13][i];
        while(x!=13)
        {
            sum[x]++;
            x=a[x][c[x]--];
        }
    }
    int ans=0;
    for(int i=1;i<=12;i++)
        if(sum[i]==4)
            ans++;
    cout<<ans;
    return 0;
}
原文地址:https://www.cnblogs.com/hnkjdx-ssf/p/14326844.html