AOJ : 2024 - Blackjack
問題概要
http://rose.u-aizu.ac.jp/onlinejudge/ProblemSet/description.jsp?id=2024
ブラックジャックやって, 最終的な得点を出す問題.
詳しくは, 次のルール
- 2~10はそのままの点数
- J,Q,Kは10点
- Aは21超えないときは, 11点として数えて, 21点超えたときは, 1点として数える
- 開始直後, 21点を取ったら, blackjackと出力
- 途中で, 21点を超したら, bustと出力
アルゴリズム
やるだけです.
プログラム
int p; bool aceFlg; //エースが11としてカウントされてるフラグ bool printFlg; char card[128]; void add(char ch){ if(ch == 'A'){ if(p+11 <= 21){ p += 11; aceFlg = true; }else{ p++; } } else{ p += card[ch]; } } int main(void){ for(int i=2;i<10;i++) card['0'+i] = i; card['T'] = card['J'] = card['Q'] = card['K'] = 10; int n; cin>>n; while(n--){ p = aceFlg = 0; printFlg = true; char a,b; cin>>a>>b; add(a); add(b); if(p == 21){ cout<<"blackjack\n"; printFlg = false; } for(int i=0;i<8;i++){ char ch; cin>>ch; if(!printFlg) continue; if(p <= 16 || p == 17 && aceFlg){ add(ch); if(p > 21 && aceFlg){ p -= 10; aceFlg = false; } if(p > 21){ cout<<"bust\n"; printFlg = false; } } } if(printFlg){ cout<<p<<endl; } } return 0; }