zoj 2852 Deck of Cards

zoj 2852 Deck of Cards,第1张

zoj 2852 Deck of Cards
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>using namespace std;int n;int dp[22][22][22][111];char card[111];int value[111];int main() {while (cin >> n && n) {memset(dp, -1, sizeof(dp));for (int i = 0; i != n; i++) {cin >> card[i];if (card[i] >= '1' && card[i] <= '9')value[i] = card[i] - '0';elseif(card[i]=='A')value[i]=1;else if (card[i] != 'F')value[i] = 10;elsevalue[i] = 21;}dp[0][0][0][0] = 0;for (int l = 0; l != n; l++)for (int i = 0; i < 22; i++)for (int j = 0; j < 22; j++)for (int k = 0; k < 22; k++) {if (dp[i][j][k][l] == -1)continue;//iif (i != 21) {if (value[l] == 21 || (i + value[l] == 21))dp[0][j][k][l + 1] = max(dp[0][j][k][l + 1],dp[i][j][k][l] + 150);else if (i + value[l] > 21) {dp[21][j][k][l + 1] = max(dp[21][j][k][l + 1],dp[i][j][k][l] + 50);} else {dp[i + value[l]][j][k][l + 1] = max(dp[i + value[l]][j][k][l + 1],dp[i][j][k][l] + 50);}}//jif (j != 21) {if (value[l] == 21 || (j + value[l] == 21))dp[i][0][k][l + 1] = max(dp[i][0][k][l + 1],dp[i][j][k][l] + 250);else if (j + value[l] > 21) {dp[i][21][k][l + 1] = max(dp[i][21][k][l + 1],dp[i][j][k][l] + 50);} else {dp[i][j + value[l]][k][l + 1] = max(dp[i][j + value[l]][k][l + 1],dp[i][j][k][l] + 50);}}//kif (k != 21) {if (value[l] == 21 || (k + value[l] == 21))dp[i][j][0][l + 1] = max(dp[i][j][0][l + 1],dp[i][j][k][l] + 350);else if (k + value[l] > 21) {dp[i][j][21][l + 1] = max(dp[i][j][21][l + 1],dp[i][j][k][l] + 50);} else {dp[i][j][k + value[l]][l + 1] = max(dp[i][j][k + value[l]][l + 1],dp[i][j][k][l] + 50);}}}int ans=-1;for (int l = 0; l <= n; l++)for (int i = 0; i < 22; i++)for (int j = 0; j < 22; j++)for (int k = 0; k < 22; k++)ans=max(ans,dp[i][j][k][l]);cout<<ans<<endl;}}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/4930743.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-13
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存