模拟_CH0802_占卜DIY
程序员文章站
2022-03-14 19:50:32
...
思路分析:
本题直接模拟即可, 为方便, 本人使用deque表示每堆牌, AC代码如下:
//CH0802_占卜DIY
#include <iostream>
#include <cstdio>
#include <deque>
#include <algorithm>
using namespace std;
pair<deque<int>, int> heap[14];//first[0...3]堆中牌(从上到下), second:本堆未掀开牌数
int kcnt;//当前尚未掀开的K的个数
void play(){
if(!kcnt) return;
int q = heap[13].first[0]; heap[13].first.pop_front();
while(true){
if(q == 13){
--kcnt, play();
return;
}
heap[q].first.push_front(q), --heap[q].second;
int p = heap[q].first[4];
heap[q].first.pop_back();
if((q = p) == 13){
--kcnt, play();
return;
}
}
}
int main(){
char ch;
for(int i = 1, tmp; i <= 13; ++i)
for(int j = 1; j <= 4; ++j)
cin >> ch
, tmp = ch == 'A'? 1: ch == 'J'? 11: ch == 'Q'? 12: ch == 'K'? 13: ch == '0'? 10: ch - '0'
, heap[i].first.push_back(tmp), heap[i].second = 4;
kcnt = 4, play();
int res = 0; for(int i = 1; i <= 12; ++i) if(!heap[i].second) ++res;
cout << res << endl;
return 0;
}
上一篇: 支付宝10亿现金红包怎么瓜分? 支付宝领取10亿红包的教程
下一篇: 后台MD5加密